From: Jouni Malinen Date: Wed, 25 Sep 2013 16:07:29 +0000 (+0300) Subject: Allow hostapd config file for dynamically added interface X-Git-Tag: hostap_2_1~921 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed1bf011da898b1f377bf15caa01398c72ee185d;p=thirdparty%2Fhostap.git Allow hostapd config file for dynamically added interface This extends hostapd global control interface command "ADD" to use a configuration file instead of requiring configuration to be built using SET command. The command format is now following: ADD > For example: ADD wlan0 /var/run/hostapd ADD wlan0 config=/tmp/hostapd.conf When using the configuration file option, ctrl_interface parameter in the file needs to be set to allow ENABLE command to be issued on the new interface. Signed-hostap: Jouni Malinen --- diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c index af44a1d97..97dab436f 100644 --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c @@ -1323,12 +1323,16 @@ int hostapd_add_iface(struct hapd_interfaces *interfaces, char *buf) struct hostapd_iface *hapd_iface = NULL; char *ptr; size_t i; + const char *conf_file = NULL; ptr = os_strchr(buf, ' '); if (ptr == NULL) return -1; *ptr++ = '\0'; + if (os_strncmp(ptr, "config=", 7) == 0) + conf_file = ptr + 7; + for (i = 0; i < interfaces->count; i++) { if (!os_strcmp(interfaces->iface[i]->conf->bss[0].iface, buf)) { @@ -1345,8 +1349,14 @@ int hostapd_add_iface(struct hapd_interfaces *interfaces, char *buf) goto fail; } - conf = hostapd_config_alloc(interfaces, buf, ptr); - if (conf == NULL) { + if (conf_file && interfaces->config_read_cb) { + conf = interfaces->config_read_cb(conf_file); + if (conf && conf->bss) + os_strlcpy(conf->bss->iface, buf, + sizeof(conf->bss->iface)); + } else + conf = hostapd_config_alloc(interfaces, buf, ptr); + if (conf == NULL || conf->bss == NULL) { wpa_printf(MSG_ERROR, "%s: Failed to allocate memory " "for configuration", __func__); goto fail;