[PATCH] nl80211: Fix bridge option for non first-bss
Mateusz Bajorski
mbajorski at plume.com
Thu Jul 21 06:01:19 PDT 2022
Bridge interface was not added to ifidx list on non first-bss configuration.
This commit adapts solution from first bss where
bridge field is handled in i802_init function
Issue occured when bridge interface already exist during adding bss.
i802_check_bridge covers only scenario when bridge interface does not exist.
Signed-off-by: Mateusz Bajorski <mbajorski at plume.com>
---
src/drivers/driver_nl80211.c | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 78c0658a0..76b57ba39 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -7912,6 +7912,7 @@ static int wpa_driver_nl80211_if_add(void *priv, enum wpa_driver_if_type type,
struct i802_bss *bss = priv;
struct wpa_driver_nl80211_data *drv = bss->drv;
int ifidx;
+ int br_ifindex = 0;
int added = 1;
if (addr)
@@ -7998,19 +7999,28 @@ static int wpa_driver_nl80211_if_add(void *priv, enum wpa_driver_if_type type,
return -1;
}
- if (bridge &&
- i802_check_bridge(drv, new_bss, bridge, ifname) < 0) {
- wpa_printf(MSG_ERROR, "nl80211: Failed to add the new "
- "interface %s to a bridge %s",
- ifname, bridge);
- if (added)
- nl80211_remove_iface(drv, ifidx);
- os_free(new_bss);
- return -1;
+ if (bridge) {
+ br_ifindex = if_nametoindex(bridge);
+ if (br_ifindex)
+ add_ifidx(drv, br_ifindex, ifidx);
+
+ if (i802_check_bridge(drv, new_bss, bridge, ifname) < 0) {
+ wpa_printf(MSG_ERROR, "nl80211: Failed to add the new "
+ "interface %s to a bridge %s",
+ ifname, bridge);
+ if (br_ifindex)
+ del_ifidx(drv, br_ifindex, ifidx);
+ if (added)
+ nl80211_remove_iface(drv, ifidx);
+ os_free(new_bss);
+ return -1;
+ }
}
if (linux_set_iface_flags(drv->global->ioctl_sock, ifname, 1))
{
+ if (br_ifindex)
+ del_ifidx(drv, br_ifindex, ifidx);
if (added)
nl80211_remove_iface(drv, ifidx);
os_free(new_bss);
--
2.36.1
More information about the Hostap
mailing list