From 1748f1da3dc94dae09217df7d7b1edc8ae7b2f06 Mon Sep 17 00:00:00 2001 From: Emanuel Taube Date: Tue, 25 Feb 2014 10:59:44 +0100 Subject: [PATCH] hostapd: Make it possible to remove addresses from maclists It is already possible to add MAC addresses at runtime. This patch allows also to remove some of them by using the prefix "-" in the address file. Signed-off-by: Emanuel Taube --- hostapd/config_file.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/hostapd/config_file.c b/hostapd/config_file.c index 2beb34c05..a889dcafb 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -129,6 +129,8 @@ static int hostapd_config_read_maclist(const char *fname, } while (fgets(buf, sizeof(buf), f)) { + int i, rem = 0; + line++; if (buf[0] == '#') @@ -143,14 +145,32 @@ static int hostapd_config_read_maclist(const char *fname, } if (buf[0] == '\0') continue; + pos = buf; + if (buf[0] == '-') { + rem = 1; + pos++; + } - if (hwaddr_aton(buf, addr)) { + if (hwaddr_aton(pos, addr)) { wpa_printf(MSG_ERROR, "Invalid MAC address '%s' at " - "line %d in '%s'", buf, line, fname); + "line %d in '%s'", pos, line, fname); fclose(f); return -1; } + if (rem) { + i = 0; + while (i < *num) { + if (os_memcmp((*acl)[i].addr, addr, ETH_ALEN) == + 0) { + os_remove_in_array(*acl, *num, + sizeof(**acl), i); + (*num)--; + } else + i++; + } + continue; + } vlan_id = 0; pos = buf; while (*pos != '\0' && *pos != ' ' && *pos != '\t')