From: Emanuel Taube Date: Tue, 25 Feb 2014 09:59:44 +0000 (+0100) Subject: hostapd: Make it possible to remove addresses from maclists X-Git-Tag: hostap_2_2~803 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1748f1da3dc94dae09217df7d7b1edc8ae7b2f06;p=thirdparty%2Fhostap.git 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 --- 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')