]> git.ipfire.org Git - thirdparty/hostap.git/blobdiff - wpa_supplicant/wpa_supplicant.c
wpa_supplicant: Add option -I for additional config file
[thirdparty/hostap.git] / wpa_supplicant / wpa_supplicant.c
index c6b45f3b2df0c5ed8429a0bdb14e6fc988221afc..8a7bbd940fc09b69f1f1d70cda5c56db618303e0 100644 (file)
@@ -399,6 +399,9 @@ static void wpa_supplicant_cleanup(struct wpa_supplicant *wpa_s)
        os_free(wpa_s->confname);
        wpa_s->confname = NULL;
 
+       os_free(wpa_s->confanother);
+       wpa_s->confanother = NULL;
+
        wpa_sm_set_eapol(wpa_s->wpa, NULL);
        eapol_sm_deinit(wpa_s->eapol);
        wpa_s->eapol = NULL;
@@ -760,12 +763,14 @@ int wpa_supplicant_reload_configuration(struct wpa_supplicant *wpa_s)
 
        if (wpa_s->confname == NULL)
                return -1;
-       conf = wpa_config_read(wpa_s->confname);
+       conf = wpa_config_read(wpa_s->confname, NULL);
        if (conf == NULL) {
                wpa_msg(wpa_s, MSG_ERROR, "Failed to parse the configuration "
                        "file '%s' - exiting", wpa_s->confname);
                return -1;
        }
+       wpa_config_read(wpa_s->confanother, conf);
+
        conf->changed_parameters = (unsigned int) -1;
 
        reconf_ctrl = !!conf->ctrl_interface != !!wpa_s->conf->ctrl_interface
@@ -2801,12 +2806,14 @@ static int wpa_supplicant_init_iface(struct wpa_supplicant *wpa_s,
 #else /* CONFIG_BACKEND_FILE */
                wpa_s->confname = os_strdup(iface->confname);
 #endif /* CONFIG_BACKEND_FILE */
-               wpa_s->conf = wpa_config_read(wpa_s->confname);
+               wpa_s->conf = wpa_config_read(wpa_s->confname, NULL);
                if (wpa_s->conf == NULL) {
                        wpa_printf(MSG_ERROR, "Failed to read or parse "
                                   "configuration '%s'.", wpa_s->confname);
                        return -1;
                }
+               wpa_s->confanother = os_rel2abs_path(iface->confanother);
+               wpa_config_read(wpa_s->confanother, wpa_s->conf);
 
                /*
                 * Override ctrl_interface and driver_param if set on command