summaryrefslogtreecommitdiffhomepage
path: root/src/dhcpv4.c
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2014-05-30 16:59:53 +0200
committerSteven Barth <steven@midlink.org>2014-05-30 16:59:53 +0200
commitfc7fb637811089b4f26fb00ca81a0d05c09076bd (patch)
tree73ca8ed1c6cf25a9bff39cbff2850faa07660dbf /src/dhcpv4.c
parent7fb8ef575d019796b212824a706b0ea5c6bdffaa (diff)
Make filtering customizable
Diffstat (limited to 'src/dhcpv4.c')
-rw-r--r--src/dhcpv4.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/dhcpv4.c b/src/dhcpv4.c
index b8e0c95..628efcd 100644
--- a/src/dhcpv4.c
+++ b/src/dhcpv4.c
@@ -37,7 +37,6 @@ static void handle_dhcpv4(void *addr, void *data, size_t len,
static struct dhcpv4_assignment* dhcpv4_lease(struct interface *iface,
enum dhcpv4_msg msg, const uint8_t *mac, struct in_addr reqaddr,
const char *hostname);
-static const char *excluded_class = "HOMENET";
// Create socket and register events
int init_dhcpv4(void)
@@ -294,11 +293,11 @@ static void handle_dhcpv4(void *addr, void *data, size_t len,
} else if (opt->type == DHCPV4_OPT_SERVERID && opt->len == 4) {
if (memcmp(opt->data, &ifaddr.sin_addr, 4))
return;
- } else if (opt->type == DHCPV4_OPT_USER_CLASS) {
+ } else if (iface->filter_class && opt->type == DHCPV4_OPT_USER_CLASS) {
uint8_t *c = opt->data, *cend = &opt->data[opt->len];
for (; c < cend && &c[*c] < cend; c = &c[1 + *c]) {
- size_t elen = strlen(excluded_class);
- if (*c == elen && !memcmp(&c[1], excluded_class, elen))
+ size_t elen = strlen(iface->filter_class);
+ if (*c == elen && !memcmp(&c[1], iface->filter_class, elen))
return; // Ignore from homenet
}
}