aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/patches/701-reload_config_inline.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2023-08-29 14:32:42 +0200
committerFelix Fietkau <nbd@nbd.name>2023-09-18 16:52:25 +0200
commit9720b094aef89802327683f25824820581fed0b9 (patch)
tree1add9555f456586bf676dca47ac674887d6f7cc2 /package/network/services/hostapd/patches/701-reload_config_inline.patch
parent263583dc1e569fae3f8e99d73f2fd72376421b17 (diff)
downloadupstream-9720b094aef89802327683f25824820581fed0b9.tar.gz
upstream-9720b094aef89802327683f25824820581fed0b9.tar.bz2
upstream-9720b094aef89802327683f25824820581fed0b9.zip
hostapd: backport from master, including ucode based reload support
This significantly improves config reload behavior and also fixes some corner cases related to running AP + mesh interfaces at the same time. Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/network/services/hostapd/patches/701-reload_config_inline.patch')
-rw-r--r--package/network/services/hostapd/patches/701-reload_config_inline.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/package/network/services/hostapd/patches/701-reload_config_inline.patch b/package/network/services/hostapd/patches/701-reload_config_inline.patch
new file mode 100644
index 0000000000..3c62bf670f
--- /dev/null
+++ b/package/network/services/hostapd/patches/701-reload_config_inline.patch
@@ -0,0 +1,33 @@
+--- a/hostapd/config_file.c
++++ b/hostapd/config_file.c
+@@ -4816,7 +4816,12 @@ 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");
++ }
+ 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
+@@ -326,8 +326,13 @@ struct wpa_config * wpa_config_read(cons
+ while (cred_tail && cred_tail->next)
+ cred_tail = cred_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));