]> git.puffer.fish Git - mirror/frr.git/commitdiff
babeld/nhrpd: ignore ipv6 srcdest routes
authorRenato Westphal <renato@opensourcerouting.org>
Sat, 19 Aug 2017 15:09:38 +0000 (12:09 -0300)
committerRenato Westphal <renato@opensourcerouting.org>
Wed, 23 Aug 2017 20:45:17 +0000 (17:45 -0300)
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
babeld/babel_zebra.c
nhrpd/nhrp_route.c

index 37f441c30fb3c01cfb8c19c5f8d34d68a996818e..a1d3a9e8ccfb60d83c75074ed3d27dbb8beb9f4c 100644 (file)
@@ -63,7 +63,7 @@ babel_zebra_read_ipv6 (int command, struct zclient *zclient,
     struct zapi_ipv6 api;
     unsigned long ifindex = -1;
     struct in6_addr nexthop;
-    struct prefix_ipv6 prefix;
+    struct prefix_ipv6 prefix, src_p;
 
     s = zclient->ibuf;
     ifindex = 0;
@@ -82,6 +82,16 @@ babel_zebra_read_ipv6 (int command, struct zclient *zclient,
     prefix.prefixlen = stream_getc (s);
     stream_get (&prefix.prefix, s, PSIZE (prefix.prefixlen));
 
+    memset(&src_p, 0, sizeof(src_p));
+    if (CHECK_FLAG(api.message, ZAPI_MESSAGE_SRCPFX)) {
+        src_p.family = AF_INET6;
+        src_p.prefixlen = stream_getc(s);
+        stream_get(&src_p.prefix, s, PSIZE(src_p.prefixlen));
+    }
+    if (src_p.prefixlen)
+        /* we completely ignore srcdest routes for now. */
+        return 0;
+
     /* Nexthop, ifindex, distance, metric. */
     if (CHECK_FLAG (api.message, ZAPI_MESSAGE_NEXTHOP)) {
         api.nexthop_num = stream_getc (s);
index c8a608c657e2887efab8c0e98964b566f6bb77a4..e9651adc544088d6269034f9c7b56b30af23303d 100644 (file)
@@ -193,6 +193,7 @@ int nhrp_route_read(int cmd, struct zclient *zclient, zebra_size_t length, vrf_i
        struct stream *s;
        struct interface *ifp = NULL;
        struct prefix prefix;
+       struct prefix_ipv6 src_p;
        union sockunion nexthop_addr;
        unsigned char message, nexthop_num, ifindex_num;
        unsigned ifindex;
@@ -226,6 +227,17 @@ int nhrp_route_read(int cmd, struct zclient *zclient, zebra_size_t length, vrf_i
        prefix.prefixlen = stream_getc(s);
        stream_get(&prefix.u.val, s, PSIZE(prefix.prefixlen));
 
+       memset(&src_p, 0, sizeof(src_p));
+       if (prefix.family == AF_INET6 &&
+           CHECK_FLAG(message, ZAPI_MESSAGE_SRCPFX)) {
+               src_p.family = AF_INET6;
+               src_p.prefixlen = stream_getc(s);
+               stream_get(&src_p.prefix, s, PSIZE(src_p.prefixlen));
+       }
+       if (src_p.prefixlen)
+               /* we completely ignore srcdest routes for now. */
+               return 0;
+
        /* Nexthop, ifindex, distance, metric. */
        if (CHECK_FLAG(message, ZAPI_MESSAGE_NEXTHOP|ZAPI_MESSAGE_IFINDEX)) {
                nexthop_num = stream_getc(s);