diff --git a/src/wifi/wifid-link.c b/src/wifi/wifid-link.c index b2de058..bc69557 100644 --- a/src/wifi/wifid-link.c +++ b/src/wifi/wifid-link.c @@ -129,6 +129,7 @@ void link_free(struct link *l) free(l->wfd_subelements); free(l->friendly_name); free(l->ifname); + free(l->config_methods); free(l); } @@ -142,6 +143,22 @@ bool link_is_using_dev(struct link *l) return l->use_dev; } +int link_set_config_methods(struct link *l, char *config_methods) +{ + char *cm; + + if (!config_methods) + return log_EINVAL(); + + cm = strdup(config_methods); + if (!cm) + return log_ENOMEM(); + + free(l->config_methods); + l->config_methods = config_methods; + return 0; +} + void link_set_managed(struct link *l, bool set) { int r; diff --git a/src/wifi/wifid-supplicant.c b/src/wifi/wifid-supplicant.c index 13951bf..a2a3a43 100644 --- a/src/wifi/wifid-supplicant.c +++ b/src/wifi/wifid-supplicant.c @@ -2597,10 +2597,9 @@ static int supplicant_write_config(struct supplicant *s) "driver_param=%s\n" "ap_scan=%s\n" "# End of configuration\n", - s->l->friendly_name ? : "unknown", + s->l->friendly_name ?: "unknown", "1-0050F204-1", - "pbc", - //"pbc keypad pin display", + s->l->config_methods ?: "pbc", "p2p_device=1", "1"); if (r < 0) { diff --git a/src/wifi/wifid.c b/src/wifi/wifid.c index 09e7195..4c0f02c 100644 --- a/src/wifi/wifid.c +++ b/src/wifi/wifid.c @@ -41,6 +41,7 @@ #include "config.h" const char *interface_name = NULL; +const char *config_methods = NULL; unsigned int arg_wpa_loglevel = LOG_NOTICE; bool use_dev = false; @@ -102,6 +103,7 @@ static void manager_add_udev_link(struct manager *m, return; link_set_friendly_name(l, m->friendly_name); + link_set_config_methods(l, m->config_methods); if(use_dev) link_use_dev(l); @@ -215,6 +217,7 @@ static void manager_free(struct manager *m) sd_event_unref(m->event); free(m->friendly_name); + free(m->config_methods); free(m); } @@ -227,6 +230,7 @@ static int manager_new(struct manager **out) unsigned int i; sigset_t mask; int r; + char *cm; m = calloc(1, sizeof(*m)); if (!m) @@ -234,6 +238,16 @@ static int manager_new(struct manager **out) shl_htable_init_uint(&m->links); + + if (config_methods) { + cm = strdup(config_methods); + if (!cm) + return log_ENOMEM(); + + free(m->config_methods); + m->config_methods = cm; + } + r = sd_event_default(&m->event); if (r < 0) { log_vERR(r); @@ -459,6 +473,7 @@ static int help(void) " --log-time Prefix log-messages with timestamp\n" "\n" " -i --interface Choose the interface to use\n" + " --config-methods Define config methods for pairing, default 'pbc'\n" "\n" " --wpa-loglevel