Merge wireless_event_{,de}init() into {,de}init() driver op
[wpasupplicant] / hostapd / hostapd.c
index 1cf21ca..b362ca2 100644 (file)
@@ -159,6 +159,16 @@ int hostapd_reload_config(struct hostapd_iface *iface)
 
        ieee802_11_set_beacon(hapd);
 
+       if (hapd->conf->ssid.ssid_set &&
+           hostapd_set_ssid(hapd, (u8 *) hapd->conf->ssid.ssid,
+                            hapd->conf->ssid.ssid_len)) {
+               wpa_printf(MSG_ERROR, "Could not set SSID for kernel driver");
+               /* try to continue */
+       }
+
+       if (hapd->conf->ieee802_1x || hapd->conf->wpa)
+               hostapd_set_ieee8021x(hapd->conf->iface, hapd, 1);
+
        hostapd_config_free(oldconf);
 
        wpa_printf(MSG_DEBUG, "Reconfigured interface %s", hapd->conf->iface);
@@ -416,8 +426,6 @@ static void hostapd_cleanup(struct hostapd_data *hapd)
 
        hostapd_deinit_wps(hapd);
 
-       hostapd_wireless_event_deinit(hapd);
-
 #ifdef EAP_TLS_FUNCS
        if (hapd->ssl_ctx) {
                tls_deinit(hapd->ssl_ctx);
@@ -1299,7 +1307,6 @@ static int setup_interface(struct hostapd_iface *iface)
        u8 *b = conf->bssid;
        int freq;
        size_t j;
-       int ret = 0;
        u8 *prev_addr;
 
        /*
@@ -1355,10 +1362,6 @@ static int setup_interface(struct hostapd_iface *iface)
                return -1;
        }
 
-       /* TODO: merge with hostapd_driver_init() ? */
-       if (hostapd_wireless_event_init(hapd) < 0)
-               return -1;
-
        if (hostapd_get_hw_features(iface)) {
                /* Not all drivers support this yet, so continue without hw
                 * feature data. */
@@ -1382,6 +1385,7 @@ static int setup_interface(struct hostapd_iface *iface)
                           hapd->iconf->channel, freq);
 
                if (hostapd_set_freq(hapd, hapd->iconf->hw_mode, freq,
+                                    hapd->iconf->channel,
                                     hapd->iconf->ieee80211n,
                                     hapd->iconf->secondary_channel)) {
                        wpa_printf(MSG_ERROR, "Could not set channel for "
@@ -1433,7 +1437,7 @@ static int setup_interface(struct hostapd_iface *iface)
                return -1;
        }
 
-       return ret;
+       return 0;
 }
 
 
@@ -1477,7 +1481,7 @@ int hostapd_setup_interface(struct hostapd_iface *iface)
  * freed after hostapd_cleanup() is called for it during interface
  * deinitialization.
  */
-static struct hostapd_data *
+struct hostapd_data *
 hostapd_alloc_bss_data(struct hostapd_iface *hapd_iface,
                       struct hostapd_config *conf,
                       struct hostapd_bss_config *bss)
@@ -1555,69 +1559,6 @@ fail:
 }
 
 
-/**
- * hostapd_init - Allocate and initialize per-interface data
- * @config_file: Path to the configuration file
- * Returns: Pointer to the allocated interface data or %NULL on failure
- *
- * This function is used to allocate main data structures for per-interface
- * data. The allocated data buffer will be freed by calling
- * hostapd_cleanup_iface().
- */
-struct hostapd_iface * hostapd_init(const char *config_file)
-{
-       struct hostapd_iface *hapd_iface = NULL;
-       struct hostapd_config *conf = NULL;
-       struct hostapd_data *hapd;
-       size_t i;
-
-       hapd_iface = os_zalloc(sizeof(*hapd_iface));
-       if (hapd_iface == NULL)
-               goto fail;
-
-       hapd_iface->config_fname = os_strdup(config_file);
-       if (hapd_iface->config_fname == NULL)
-               goto fail;
-
-       conf = hostapd_config_read(hapd_iface->config_fname);
-       if (conf == NULL)
-               goto fail;
-       hapd_iface->conf = conf;
-
-       hapd_iface->num_bss = conf->num_bss;
-       hapd_iface->bss = os_zalloc(conf->num_bss *
-                                   sizeof(struct hostapd_data *));
-       if (hapd_iface->bss == NULL)
-               goto fail;
-
-       for (i = 0; i < conf->num_bss; i++) {
-               hapd = hapd_iface->bss[i] =
-                       hostapd_alloc_bss_data(hapd_iface, conf,
-                                              &conf->bss[i]);
-               if (hapd == NULL)
-                       goto fail;
-       }
-
-       return hapd_iface;
-
-fail:
-       if (conf)
-               hostapd_config_free(conf);
-       if (hapd_iface) {
-               for (i = 0; hapd_iface->bss && i < hapd_iface->num_bss; i++) {
-                       hapd = hapd_iface->bss[i];
-                       if (hapd && hapd->ssl_ctx)
-                               tls_deinit(hapd->ssl_ctx);
-               }
-
-               os_free(hapd_iface->config_fname);
-               os_free(hapd_iface->bss);
-               os_free(hapd_iface);
-       }
-       return NULL;
-}
-
-
 void hostapd_interface_deinit(struct hostapd_iface *iface)
 {
        size_t j;