This implements vastly improved dynamic configuration reload support. It can handle configuration changes on individual wifi interfaces, as well as adding/removing interfaces. Signed-off-by: Felix Fietkau <nbd@nbd.name>
34 lines
1.0 KiB
Diff
34 lines
1.0 KiB
Diff
--- a/hostapd/config_file.c
|
|
+++ b/hostapd/config_file.c
|
|
@@ -4814,7 +4814,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));
|