[quagga-dev 5016] A patch for 0.99.8 to fix IPv6 PtP static routes

Emmanuel Vize emmanuel.vize at 6wind.com
Fri Aug 3 14:41:16 BST 2007


Hi,

I am currently merging my Quagga version with the 0.99.8 release.
I found one problem: Static IPv6 routes in 6in6 tunnels (PtP) are not 
working anymore, the routes via the other endpoint of the interface are 
inactive.
I observe this on Linux.

I would suggest the patch below:


--- rt_netlink.c.orig   Fri Aug  3 14:27:05 2007
+++ rt_netlink.c        Fri Aug  3 15:20:51 2007
@@ -712,12 +712,10 @@
   addr = (tb[IFA_LOCAL] ? RTA_DATA(tb[IFA_LOCAL]) : NULL);
 
   /* is there a peer address? */
-  /* N.B. I do not understand why the memcmp compares 4 bytes regardless
-     of address family, but this is exactly how it appears in
-     print_addrinfo.  I wonder if it should be RTA_PAYLOAD(tb[IFA_ADDRESS])
-     instead of 4... */
   if (tb[IFA_ADDRESS] &&
-      memcmp(RTA_DATA(tb[IFA_ADDRESS]), RTA_DATA(tb[IFA_LOCAL]), 4))
+      memcmp(RTA_DATA(tb[IFA_ADDRESS]),RTA_DATA(tb[IFA_LOCAL]),
+                  ifa->ifa_family == AF_INET ? 4 :
+                  ifa->ifa_family == AF_INET6 ? 16 : /* fall back*/ 4))
     {
       broad = RTA_DATA(tb[IFA_ADDRESS]);
       SET_FLAG (flags, ZEBRA_IFA_PEER);



With this patch, it is working much better.

If no objections, I will commit next week.


Regards,
Emmanuel

-- 
Emmanuel Vize
Project Leader
Tel: +33-1-39-30-92-12
Fax: +33-1-39-30-92-11
visit our web http://www.6wind.com




More information about the Quagga-dev mailing list