hostapd: update to latest Git hostap_2_9-1238-gdd2daf0848ed
[openwrt/staging/luka.git] / package / network / services / hostapd / patches / 700-wifi-reload.patch
index e89d21d5804cf4ffed5cf758b0f02753c37052b2..053dcdad832416eabd3069cbe0f40c8e869bcf9a 100644 (file)
@@ -1,6 +1,6 @@
 --- a/hostapd/config_file.c
 +++ b/hostapd/config_file.c
-@@ -2470,6 +2470,8 @@ static int hostapd_config_fill(struct ho
+@@ -2460,6 +2460,8 @@ static int hostapd_config_fill(struct ho
                bss->isolate = atoi(pos);
        } else if (os_strcmp(buf, "ap_max_inactivity") == 0) {
                bss->ap_max_inactivity = atoi(pos);
@@ -9,18 +9,18 @@
        } else if (os_strcmp(buf, "skip_inactivity_poll") == 0) {
                bss->skip_inactivity_poll = atoi(pos);
        } else if (os_strcmp(buf, "country_code") == 0) {
-@@ -3131,6 +3133,8 @@ static int hostapd_config_fill(struct ho
+@@ -3156,6 +3158,8 @@ static int hostapd_config_fill(struct ho
                }
        } else if (os_strcmp(buf, "acs_exclude_dfs") == 0) {
                conf->acs_exclude_dfs = atoi(pos);
 +      } else if (os_strcmp(buf, "radio_config_id") == 0) {
 +                      conf->config_id = os_strdup(pos);
+       } else if (os_strcmp(buf, "op_class") == 0) {
+               conf->op_class = atoi(pos);
        } else if (os_strcmp(buf, "channel") == 0) {
-               if (os_strcmp(pos, "acs_survey") == 0) {
- #ifndef CONFIG_ACS
 --- a/src/ap/ap_config.c
 +++ b/src/ap/ap_config.c
-@@ -698,6 +698,7 @@ void hostapd_config_free_bss(struct host
+@@ -772,6 +772,7 @@ void hostapd_config_free_bss(struct host
        os_free(conf->radius_req_attr_sqlite);
        os_free(conf->rsn_preauth_interfaces);
        os_free(conf->ctrl_interface);
@@ -28,7 +28,7 @@
        os_free(conf->ca_cert);
        os_free(conf->server_cert);
        os_free(conf->server_cert2);
-@@ -881,6 +882,7 @@ void hostapd_config_free(struct hostapd_
+@@ -964,6 +965,7 @@ void hostapd_config_free(struct hostapd_
  
        for (i = 0; i < conf->num_bss; i++)
                hostapd_config_free_bss(conf->bss[i]);
@@ -38,7 +38,7 @@
        os_free(conf->basic_rates);
 --- a/src/ap/ap_config.h
 +++ b/src/ap/ap_config.h
-@@ -829,6 +829,7 @@ struct hostapd_bss_config {
+@@ -859,6 +859,7 @@ struct hostapd_bss_config {
         */
        u8 mka_psk_set;
  #endif /* CONFIG_MACSEC */
@@ -46,7 +46,7 @@
  };
  
  /**
-@@ -1012,6 +1013,7 @@ struct hostapd_config {
+@@ -1050,6 +1051,7 @@ struct hostapd_config {
        unsigned int airtime_update_interval;
  #define AIRTIME_MODE_MAX (__AIRTIME_MODE_MAX - 1)
  #endif /* CONFIG_AIRTIME_POLICY */
@@ -56,7 +56,7 @@
  
 --- a/src/ap/hostapd.c
 +++ b/src/ap/hostapd.c
-@@ -206,6 +206,10 @@ static int hostapd_iface_conf_changed(st
+@@ -216,6 +216,10 @@ static int hostapd_iface_conf_changed(st
  {
        size_t i;
  
@@ -67,7 +67,7 @@
        if (newconf->num_bss != oldconf->num_bss)
                return 1;
  
-@@ -219,7 +223,7 @@ static int hostapd_iface_conf_changed(st
+@@ -229,7 +233,7 @@ static int hostapd_iface_conf_changed(st
  }
  
  
@@ -76,7 +76,7 @@
  {
        struct hapd_interfaces *interfaces = iface->interfaces;
        struct hostapd_data *hapd = iface->bss[0];
-@@ -242,13 +246,16 @@ int hostapd_reload_config(struct hostapd
+@@ -252,13 +256,16 @@ int hostapd_reload_config(struct hostapd
        if (newconf == NULL)
                return -1;
  
@@ -95,7 +95,7 @@
                wpa_printf(MSG_DEBUG,
                           "Configuration changes include interface/BSS modification - force full disable+enable sequence");
                fname = os_strdup(iface->config_fname);
-@@ -273,6 +280,22 @@ int hostapd_reload_config(struct hostapd
+@@ -283,6 +290,24 @@ int hostapd_reload_config(struct hostapd
                        wpa_printf(MSG_ERROR,
                                   "Failed to enable interface on config reload");
                return res;
 +                      if (!hapd->config_id || strcmp(hapd->config_id, newconf->bss[j]->config_id)) {
 +                              hostapd_flush_old_stations(iface->bss[j],
 +                                                         WLAN_REASON_PREV_AUTH_NOT_VALID);
++#ifdef CONFIG_WEP
 +                              hostapd_broadcast_wep_clear(iface->bss[j]);
++#endif
 +
 +#ifndef CONFIG_NO_RADIUS
 +                              /* TODO: update dynamic data based on changed configuration
        }
        iface->conf = newconf;
  
-@@ -289,6 +312,12 @@ int hostapd_reload_config(struct hostapd
+@@ -299,6 +324,12 @@ int hostapd_reload_config(struct hostapd
  
        for (j = 0; j < iface->num_bss; j++) {
                hapd = iface->bss[j];
                hapd->iconf = newconf;
                hapd->conf = newconf->bss[j];
                hostapd_reload_bss(hapd);
-@@ -2257,6 +2286,10 @@ hostapd_alloc_bss_data(struct hostapd_if
+@@ -2329,6 +2360,10 @@ hostapd_alloc_bss_data(struct hostapd_if
        hapd->iconf = conf;
        hapd->conf = bss;
        hapd->iface = hapd_iface;
        hapd->ctrl_sock = -1;
 --- a/src/ap/hostapd.h
 +++ b/src/ap/hostapd.h
-@@ -42,7 +42,7 @@ struct mesh_conf;
+@@ -46,7 +46,7 @@ struct mesh_conf;
  struct hostapd_iface;
  
  struct hapd_interfaces {
        struct hostapd_config * (*config_read_cb)(const char *config_fname);
        int (*ctrl_iface_init)(struct hostapd_data *hapd);
        void (*ctrl_iface_deinit)(struct hostapd_data *hapd);
-@@ -148,6 +148,7 @@ struct hostapd_data {
+@@ -156,6 +156,7 @@ struct hostapd_data {
        struct hostapd_config *iconf;
        struct hostapd_bss_config *conf;
        struct hostapd_ubus_bss ubus;
        int interface_added; /* virtual interface added for this BSS */
        unsigned int started:1;
        unsigned int disabled:1;
-@@ -575,7 +576,7 @@ struct hostapd_iface {
+@@ -582,7 +583,7 @@ struct hostapd_iface {
  int hostapd_for_each_interface(struct hapd_interfaces *interfaces,
                               int (*cb)(struct hostapd_iface *iface,
                                         void *ctx), void *ctx);
  hostapd_alloc_bss_data(struct hostapd_iface *hapd_iface,
 --- a/src/drivers/driver_nl80211.c
 +++ b/src/drivers/driver_nl80211.c
-@@ -4295,6 +4295,9 @@ static int wpa_driver_nl80211_set_ap(voi
+@@ -4486,6 +4486,9 @@ static int wpa_driver_nl80211_set_ap(voi
        if (ret) {
                wpa_printf(MSG_DEBUG, "nl80211: Beacon set failed: %d (%s)",
                           ret, strerror(-ret));
                nl80211_set_bss(bss, params->cts_protect, params->preamble,
 --- a/hostapd/ctrl_iface.c
 +++ b/hostapd/ctrl_iface.c
-@@ -182,7 +182,7 @@ static int hostapd_ctrl_iface_update(str
+@@ -184,7 +184,7 @@ static int hostapd_ctrl_iface_update(str
        iface->interfaces->config_read_cb = hostapd_ctrl_iface_config_read;
        reload_opts = txt;
  
  }
 --- a/hostapd/main.c
 +++ b/hostapd/main.c
-@@ -320,7 +320,7 @@ static void handle_term(int sig, void *s
+@@ -317,7 +317,7 @@ static void handle_term(int sig, void *s
  
  static int handle_reload_iface(struct hostapd_iface *iface, void *ctx)
  {
        }
 --- a/src/ap/wps_hostapd.c
 +++ b/src/ap/wps_hostapd.c
-@@ -275,7 +275,7 @@ static void wps_reload_config(void *eloo
+@@ -315,7 +315,7 @@ static void wps_reload_config(void *eloo
  
        wpa_printf(MSG_DEBUG, "WPS: Reload configuration data");
        if (iface->interfaces == NULL ||