summaryrefslogtreecommitdiffhomepage
path: root/src/router.c
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2014-02-18 09:36:29 +0100
committerSteven Barth <steven@midlink.org>2014-02-18 09:36:29 +0100
commit7e778d60e28a802f4d9a4c2d68ee97a5079a8946 (patch)
treef4bd08630ae03e2679370262f80bf6591826f287 /src/router.c
parente9a21fdb43c9f94762a724db1a043b376f745ae3 (diff)
Avoid some bloat
Diffstat (limited to 'src/router.c')
-rw-r--r--src/router.c16
1 files changed, 1 insertions, 15 deletions
diff --git a/src/router.c b/src/router.c
index 907011a..7a79119 100644
--- a/src/router.c
+++ b/src/router.c
@@ -186,20 +186,6 @@ static void handle_icmpv6(void *addr, void *data, size_t len,
}
-static bool match_route(const struct odhcpd_ipaddr *n, const struct in6_addr *addr)
-{
- if (n->prefix <= 32)
- return ntohl(n->addr.s6_addr32[0]) >> (32 - n->prefix) ==
- ntohl(addr->s6_addr32[0]) >> (32 - n->prefix);
-
- if (n->addr.s6_addr32[0] != addr->s6_addr32[0])
- return false;
-
- return ntohl(n->addr.s6_addr32[1]) >> (64 - n->prefix) ==
- ntohl(addr->s6_addr32[1]) >> (64 - n->prefix);
-}
-
-
// Detect whether a default route exists, also find the source prefixes
static bool parse_routes(struct odhcpd_ipaddr *n, ssize_t len)
{
@@ -224,7 +210,7 @@ static bool parse_routes(struct odhcpd_ipaddr *n, ssize_t len)
for (ssize_t i = 0; i < len; ++i) {
if (n[i].prefix <= 64 && n[i].prefix >= p.prefix &&
- match_route(&p, &n[i].addr)) {
+ !odhcpd_bmemcmp(&p.addr, &n[i].addr, p.prefix)) {
n[i].prefix = p.prefix;
break;
}