projects
/
libeap.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
20e2cb0
)
VLAN: Fix bridge interface clean up for no tagged_interface case
author
Jouni Malinen
<j@w1.fi>
Thu, 15 Apr 2010 22:13:46 +0000
(
01:13
+0300)
committer
Jouni Malinen
<j@w1.fi>
Thu, 15 Apr 2010 22:13:46 +0000
(
01:13
+0300)
src/ap/vlan_init.c
patch
|
blob
|
history
diff --git
a/src/ap/vlan_init.c
b/src/ap/vlan_init.c
index
d222608
..
e197933
100644
(file)
--- a/
src/ap/vlan_init.c
+++ b/
src/ap/vlan_init.c
@@
-526,7
+526,6
@@
static void vlan_dellink(char *ifname, struct hostapd_data *hapd)
char br_name[IFNAMSIZ];
struct hostapd_vlan *first, *prev, *vlan = hapd->conf->vlan;
char *tagged_interface = hapd->conf->ssid.vlan_tagged_interface;
char br_name[IFNAMSIZ];
struct hostapd_vlan *first, *prev, *vlan = hapd->conf->vlan;
char *tagged_interface = hapd->conf->ssid.vlan_tagged_interface;
- int numports;
wpa_printf(MSG_DEBUG, "VLAN: vlan_dellink(%s)", ifname);
wpa_printf(MSG_DEBUG, "VLAN: vlan_dellink(%s)", ifname);
@@
-537,19
+536,24
@@
static void vlan_dellink(char *ifname, struct hostapd_data *hapd)
os_snprintf(br_name, sizeof(br_name), "brvlan%d",
vlan->vlan_id);
os_snprintf(br_name, sizeof(br_name), "brvlan%d",
vlan->vlan_id);
+ if (vlan->clean & DVLAN_CLEAN_WLAN_PORT)
+ br_delif(br_name, vlan->ifname);
+
if (tagged_interface) {
os_snprintf(vlan_ifname, sizeof(vlan_ifname),
"vlan%d", vlan->vlan_id);
if (tagged_interface) {
os_snprintf(vlan_ifname, sizeof(vlan_ifname),
"vlan%d", vlan->vlan_id);
-
- numports = br_getnumports(br_name);
- if (numports == 1) {
+ if (vlan->clean & DVLAN_CLEAN_VLAN_PORT)
br_delif(br_name, vlan_ifname);
br_delif(br_name, vlan_ifname);
+ ifconfig_down(vlan_ifname);
+ if (vlan->clean & DVLAN_CLEAN_VLAN)
vlan_rem(vlan_ifname);
vlan_rem(vlan_ifname);
+ }
- ifconfig_down(br_name);
- br_delbr(br_name);
- }
+ if ((vlan->clean & DVLAN_CLEAN_BR) &&
+ br_getnumports(br_name) == 0) {
+ ifconfig_down(br_name);
+ br_delbr(br_name);
}
if (vlan == first) {
}
if (vlan == first) {