Lines Matching full:vlan

2  * hostapd / VLAN initialization
22 static int vlan_if_add(struct hostapd_data *hapd, struct hostapd_vlan *vlan, in vlan_if_add() argument
33 "VLAN: Refusing to set up VLAN iface %s with WEP", in vlan_if_add()
34 vlan->ifname); in vlan_if_add()
39 if (!iface_exists(vlan->ifname)) in vlan_if_add()
40 ret = hostapd_vlan_if_add(hapd, vlan->ifname); in vlan_if_add()
49 ifconfig_up(vlan->ifname); /* else wpa group will fail fatal */ in vlan_if_add()
52 ret = wpa_auth_ensure_group(hapd->wpa_auth, vlan->vlan_id); in vlan_if_add()
57 wpa_printf(MSG_ERROR, "WPA initialization for VLAN %d failed (%d)", in vlan_if_add()
58 vlan->vlan_id, ret); in vlan_if_add()
59 if (wpa_auth_release_group(hapd->wpa_auth, vlan->vlan_id)) in vlan_if_add()
60 wpa_printf(MSG_ERROR, "WPA deinit of %s failed", vlan->ifname); in vlan_if_add()
63 if (hostapd_vlan_if_remove(hapd, vlan->ifname)) in vlan_if_add()
64 wpa_printf(MSG_ERROR, "Removal of %s failed", vlan->ifname); in vlan_if_add()
70 int vlan_if_remove(struct hostapd_data *hapd, struct hostapd_vlan *vlan) in vlan_if_remove() argument
74 ret = wpa_auth_release_group(hapd->wpa_auth, vlan->vlan_id); in vlan_if_remove()
77 "WPA deinitialization for VLAN %d failed (%d)", in vlan_if_remove()
78 vlan->vlan_id, ret); in vlan_if_remove()
80 return hostapd_vlan_if_remove(hapd, vlan->ifname); in vlan_if_remove()
85 struct hostapd_vlan *vlan) in vlan_dynamic_add() argument
87 while (vlan) { in vlan_dynamic_add()
88 if (vlan->vlan_id != VLAN_ID_WILDCARD) { in vlan_dynamic_add()
89 if (vlan_if_add(hapd, vlan, 1)) { in vlan_dynamic_add()
91 "VLAN: Could not add VLAN %s: %s", in vlan_dynamic_add()
92 vlan->ifname, strerror(errno)); in vlan_dynamic_add()
96 vlan_newlink(vlan->ifname, hapd); in vlan_dynamic_add()
100 vlan = vlan->next; in vlan_dynamic_add()
108 struct hostapd_vlan *vlan) in vlan_dynamic_remove() argument
112 while (vlan) { in vlan_dynamic_remove()
113 next = vlan->next; in vlan_dynamic_remove()
117 if (vlan->vlan_id != VLAN_ID_WILDCARD) in vlan_dynamic_remove()
118 vlan_dellink(vlan->ifname, hapd); in vlan_dynamic_remove()
120 if (vlan->vlan_id != VLAN_ID_WILDCARD && in vlan_dynamic_remove()
121 vlan_if_remove(hapd, vlan)) { in vlan_dynamic_remove()
122 wpa_printf(MSG_ERROR, "VLAN: Could not remove VLAN " in vlan_dynamic_remove()
124 vlan->ifname, strerror(errno)); in vlan_dynamic_remove()
128 vlan = next; in vlan_dynamic_remove()
141 !hapd->conf->vlan) { in vlan_init()
143 struct hostapd_vlan *vlan; in vlan_init() local
146 vlan = os_zalloc(sizeof(*vlan)); in vlan_init()
147 if (vlan == NULL) { in vlan_init()
149 "VLAN interfaces"); in vlan_init()
153 vlan->vlan_id = VLAN_ID_WILDCARD; in vlan_init()
154 ret = os_snprintf(vlan->ifname, sizeof(vlan->ifname), "%s.#", in vlan_init()
156 if (ret >= (int) sizeof(vlan->ifname)) { in vlan_init()
158 "VLAN: Interface name was truncated to %s", in vlan_init()
159 vlan->ifname); in vlan_init()
161 os_free(vlan); in vlan_init()
164 vlan->next = hapd->conf->vlan; in vlan_init()
165 hapd->conf->vlan = vlan; in vlan_init()
168 if (vlan_dynamic_add(hapd, hapd->conf->vlan)) in vlan_init()
177 vlan_dynamic_remove(hapd, hapd->conf->vlan); in vlan_deinit()
187 struct hostapd_vlan *vlan, in vlan_add_dynamic()
195 if (vlan == NULL || vlan->vlan_id != VLAN_ID_WILDCARD) in vlan_add_dynamic()
198 wpa_printf(MSG_DEBUG, "VLAN: %s(vlan_id=%d ifname=%s)", in vlan_add_dynamic()
199 __func__, vlan_id, vlan->ifname); in vlan_add_dynamic()
200 os_strlcpy(ifname, vlan->ifname, sizeof(ifname)); in vlan_add_dynamic()
221 os_strlcpy(n->bridge, vlan->bridge, sizeof(n->bridge)); in vlan_add_dynamic()
223 n->next = hapd->conf->vlan; in vlan_add_dynamic()
224 hapd->conf->vlan = n; in vlan_add_dynamic()
226 /* hapd->conf->vlan needs this new VLAN here for WPA setup */ in vlan_add_dynamic()
228 hapd->conf->vlan = n->next; in vlan_add_dynamic()
239 struct hostapd_vlan *vlan; in vlan_remove_dynamic() local
244 wpa_printf(MSG_DEBUG, "VLAN: %s(ifname=%s vlan_id=%d)", in vlan_remove_dynamic()
247 vlan = hapd->conf->vlan; in vlan_remove_dynamic()
248 while (vlan) { in vlan_remove_dynamic()
249 if (vlan->vlan_id == vlan_id && vlan->dynamic_vlan > 0) { in vlan_remove_dynamic()
250 vlan->dynamic_vlan--; in vlan_remove_dynamic()
253 vlan = vlan->next; in vlan_remove_dynamic()
256 if (vlan == NULL) in vlan_remove_dynamic()
259 if (vlan->dynamic_vlan == 0) { in vlan_remove_dynamic()
260 vlan_if_remove(hapd, vlan); in vlan_remove_dynamic()
262 vlan_dellink(vlan->ifname, hapd); in vlan_remove_dynamic()