[Babel-users] Default gateway problem

Juliusz Chroboczek Juliusz.Chroboczek at pps.jussieu.fr
Fri May 23 23:12:19 UTC 2008


It turns out it was not specific to 64-bit machines, but rather to
very recent Linux kernels.  The netfilter people have changed the
(mostly undocumented) API once again.  Of course, since the API wasn't
documented, they preserved the documented API ;-)

The following patch (committed in the Darcs repository) should re-add
support for exporting default routes on recent Linux kernels.

                                        Juliusz

Sat May 24 01:08:20 CEST 2008  Juliusz Chroboczek <jch at pps.jussieu.fr>
  * Fix parsing of kernel route metric on recent kernels.
  Recent kernels don't include RTA_PRIORITY when it's 0.
Sat May 24 00:59:40 CEST 2008  Juliusz Chroboczek <jch at pps.jussieu.fr>
  * Fix exporting of IPv4 default routes on recent kernels.
  Recent kernels don't include RTA_DST in the default route.  This fixes
  incorrect parsing of such entries.  Reported by Robert Lukan.
diff -rN -u old-babel/kernel_netlink.c new-babel/kernel_netlink.c
--- old-babel/kernel_netlink.c  2008-05-24 01:09:31.000000000 +0200
+++ new-babel/kernel_netlink.c  2008-05-24 01:09:31.000000000 +0200
@@ -784,8 +784,13 @@
     memset(&route->prefix, 0, sizeof(struct in6_addr));
     memset(&route->gw, 0, sizeof(struct in6_addr));
     route->plen = rtm->rtm_dst_len;
-    if(rtm->rtm_family == AF_INET) route->plen += 96;
-    route->metric = KERNEL_INFINITY;
+    if(rtm->rtm_family == AF_INET) {
+        const char zeroes[4] = {0, 0, 0, 0};
+        v4tov6(route->prefix, zeroes);
+        route->plen += 96;
+    }
+
+    route->metric = 0;
     route->ifindex = 0;
     route->proto = rtm->rtm_protocol;
 



More information about the Babel-users mailing list