[openwrt/openwrt] hostapd: fix wpa_supplicant bringup with non-nl80211 drivers

LEDE Commits lede-commits at lists.infradead.org
Thu Sep 21 23:11:07 PDT 2023


nbd pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/fe1028e89c7d112c97037a829d07195c4efaa5b8

commit fe1028e89c7d112c97037a829d07195c4efaa5b8
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Fri Sep 22 07:58:45 2023 +0200

    hostapd: fix wpa_supplicant bringup with non-nl80211 drivers
    
    Needed for wired 802.1x
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
    (cherry picked from commit fd6d7aafb2c3d335a3d192c308ffdace8d292e9f)
---
 .../network/services/hostapd/src/wpa_supplicant/ucode.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/package/network/services/hostapd/src/wpa_supplicant/ucode.c b/package/network/services/hostapd/src/wpa_supplicant/ucode.c
index 55d22584ff..6cba73dcd5 100644
--- a/package/network/services/hostapd/src/wpa_supplicant/ucode.c
+++ b/package/network/services/hostapd/src/wpa_supplicant/ucode.c
@@ -136,6 +136,7 @@ static uc_value_t *
 uc_wpas_add_iface(uc_vm_t *vm, size_t nargs)
 {
 	uc_value_t *info = uc_fn_arg(0);
+	uc_value_t *driver = ucv_object_get(info, "driver", NULL);
 	uc_value_t *ifname = ucv_object_get(info, "iface", NULL);
 	uc_value_t *bridge = ucv_object_get(info, "bridge", NULL);
 	uc_value_t *config = ucv_object_get(info, "config", NULL);
@@ -154,6 +155,22 @@ uc_wpas_add_iface(uc_vm_t *vm, size_t nargs)
 		.ctrl_interface = ucv_string_get(ctrl),
 	};
 
+	if (driver) {
+		const char *drvname;
+		if (ucv_type(driver) != UC_STRING)
+			goto out;
+
+		iface.driver = NULL;
+		drvname = ucv_string_get(driver);
+		for (int i = 0; wpa_drivers[i]; i++) {
+			if (!strcmp(drvname, wpa_drivers[i]->name))
+				iface.driver = wpa_drivers[i]->name;
+		}
+
+		if (!iface.driver)
+			goto out;
+	}
+
 	if (!iface.ifname || !iface.confname)
 		goto out;
 




More information about the lede-commits mailing list