1
0
Fork 0
forked from mirror/openwrt
openwrt/package/network/services/hostapd/patches/701-reload_config_inline.patch
Felix Fietkau d5fa130113 hostapd: fix link address of secondary MLO interfaces
Ensure that hapd->own_addr is set based on the configured bssid

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-26 11:53:50 +02:00

76 lines
2.5 KiB
Diff

From: Felix Fietkau <nbd@nbd.name>
Date: Fri, 26 May 2023 10:23:59 +0200
Subject: [PATCH] Add ucode support, use ucode for the main ubus object #2
This implements vastly improved dynamic configuration reload support.
It can handle configuration changes on individual wifi interfaces, as well
as adding/removing interfaces.
--- a/hostapd/config_file.c
+++ b/hostapd/config_file.c
@@ -4983,7 +4983,14 @@ struct hostapd_config * hostapd_config_r
int errors = 0;
size_t i;
- f = fopen(fname, "r");
+ if (!strncmp(fname, "data:", 5)) {
+ f = fmemopen((void *)(fname + 5), strlen(fname + 5), "r");
+ fname = "<inline>";
+ } else {
+ f = fopen(fname, "r");
+ }
+ wpa_printf(MSG_INFO, "Configuration file: Reading configuration file '%s'",
+ fname);
if (f == NULL) {
wpa_printf(MSG_ERROR, "Could not open configuration file '%s' "
"for reading.", fname);
--- a/wpa_supplicant/config_file.c
+++ b/wpa_supplicant/config_file.c
@@ -390,8 +390,13 @@ struct wpa_config * wpa_config_read(cons
while (identity_tail && identity_tail->next)
identity_tail = identity_tail->next;
+ if (!strncmp(name, "data:", 5)) {
+ f = fmemopen((void *)(name + 5), strlen(name + 5), "r");
+ name = "<inline>";
+ } else {
+ f = fopen(name, "r");
+ }
wpa_printf(MSG_DEBUG, "Reading configuration file '%s'", name);
- f = fopen(name, "r");
if (f == NULL) {
wpa_printf(MSG_ERROR, "Failed to open config file '%s', "
"error: %s", name, strerror(errno));
--- a/hostapd/main.c
+++ b/hostapd/main.c
@@ -406,7 +406,11 @@ hostapd_interface_init(struct hapd_inter
struct hostapd_iface *iface;
int k;
- wpa_printf(MSG_DEBUG, "Configuration file: %s", config_fname);
+ if (!strncmp(config_fname, "data:", 5)) {
+ wpa_printf(MSG_DEBUG, "Configuration file: %s", "<inline>");
+ } else {
+ wpa_printf(MSG_DEBUG, "Configuration file: %s", config_fname);
+ }
iface = hostapd_init(interfaces, config_fname);
if (!iface)
return NULL;
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -3399,8 +3399,13 @@ hostapd_interface_init_bss(struct hapd_i
}
}
- wpa_printf(MSG_INFO, "Configuration file: %s (phy %s)%s",
- config_fname, phy, iface ? "" : " --> new PHY");
+ if (!strncmp(config_fname, "data:", 5)) {
+ wpa_printf(MSG_INFO, "Configuration file: %s (phy %s)%s",
+ "<inline>", phy, iface ? "" : " --> new PHY");
+ } else {
+ wpa_printf(MSG_INFO, "Configuration file: %s (phy %s)%s",
+ config_fname, phy, iface ? "" : " --> new PHY");
+ }
conf = interfaces->config_read_cb(config_fname);
if (!conf)