Simplify inet gw detection
authorHenning Rogge <hrogge@googlemail.com>
Mon, 25 Jan 2010 19:11:20 +0000 (20:11 +0100)
committerHenning Rogge <hrogge@googlemail.com>
Mon, 25 Jan 2010 19:11:20 +0000 (20:11 +0100)
src/ipcalc.c
src/ipcalc.h

index 269bf88..df4d83b 100644 (file)
@@ -215,8 +215,8 @@ bool ip_is_inetgw_prefix(union olsr_ip_addr *net, int prefixlen) {
   if (olsr_cnf->ip_version == AF_INET6 && prefixlen == ipv6_internet_route.prefix_len) {
     return memcmp(&ipv6_internet_route.prefix, net, olsr_cnf->ipsize) == 0;
   }
-  if (prefixlen == 96) {
-    return memcmp(&mapped_v4_gw, net, olsr_cnf->ipsize) == 0;
+  if (olsr_cnf->ip_version == AF_INET6 && prefixlen == mapped_v4_gw.prefix_len) {
+    return memcmp(&mapped_v4_gw.prefix, net, olsr_cnf->ipsize) == 0;
   }
   if (olsr_cnf->ip_version == AF_INET && prefixlen == 0) {
     return memcmp(&in6addr_any, net, olsr_cnf->ipsize) == 0;
index 10a453c..f7e347f 100644 (file)
@@ -183,8 +183,7 @@ olsr_ipv6_to_ipv4(const union olsr_ip_addr *ipv6, union olsr_ip_addr *ipv4) {
 
 static INLINE bool
 ip_prefix_is_mappedv4_gw(struct olsr_ip_prefix *prefix) {
-  return olsr_cnf->ip_version == AF_INET6 && prefix->prefix_len == mapped_v4_gw.prefix_len
-      && memcmp(&prefix->prefix, &mapped_v4_gw.prefix, sizeof(prefix->prefix)) == 0;
+  return olsr_cnf->ip_version == AF_INET6 && memcmp(prefix, &mapped_v4_gw, sizeof(struct olsr_ip_prefix)) == 0;
 }
 
 extern bool ip_is_inetgw_prefix(union olsr_ip_addr *net, int prefixlen);