hostapd: add ubus notifications for adding/removing vlan interfaces
[openwrt/staging/dedeckeh.git] / package / network / services / hostapd / patches / 600-ubus_support.patch
index 938840755a79c5147d3b135c89f24f1240c42a4e..0d1cb2c3e48b8139e3acb6b0d30147cc4b5cdf85 100644 (file)
  }
  
  
+--- a/src/ap/vlan_init.c
++++ b/src/ap/vlan_init.c
+@@ -22,6 +22,7 @@
+ static int vlan_if_add(struct hostapd_data *hapd, struct hostapd_vlan *vlan,
+                      int existsok)
+ {
++      bool vlan_exists = iface_exists(vlan->ifname);
+       int ret;
+ #ifdef CONFIG_WEP
+       int i;
+@@ -36,7 +37,7 @@ static int vlan_if_add(struct hostapd_da
+       }
+ #endif /* CONFIG_WEP */
+-      if (!iface_exists(vlan->ifname))
++      if (!vlan_exists)
+               ret = hostapd_vlan_if_add(hapd, vlan->ifname);
+       else if (!existsok)
+               return -1;
+@@ -51,6 +52,9 @@ static int vlan_if_add(struct hostapd_da
+       if (hapd->wpa_auth)
+               ret = wpa_auth_ensure_group(hapd->wpa_auth, vlan->vlan_id);
++      if (!ret && !vlan_exists)
++              hostapd_ubus_add_vlan(hapd, vlan);
++
+       if (ret == 0)
+               return ret;
+@@ -77,6 +81,8 @@ int vlan_if_remove(struct hostapd_data *
+                          "WPA deinitialization for VLAN %d failed (%d)",
+                          vlan->vlan_id, ret);
++      hostapd_ubus_remove_vlan(hapd, vlan);
++
+       return hostapd_vlan_if_remove(hapd, vlan->ifname);
+ }