]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd, ospf6d, ripngd: Do not allow v6 LL's to be `redist connected` in 3764/head
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 22 Feb 2019 15:20:51 +0000 (10:20 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 27 Mar 2019 20:22:22 +0000 (16:22 -0400)
The rib process of handling routes has been unified a bit more
and as a result v6 LL routes are now showing up as a result
of a `redistribute connected`.  Doing anything with these
routes is a policy decision that should be enforced by the
individual routing daemons not by zebra.  As such add a bit
of code to isisd, ripngd and opsf6d to handle them.  The bgp daemon
already handles this situation.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
isisd/isis_zebra.c
ospf6d/ospf6_zebra.c
ripngd/ripng_zebra.c

index dfe74e325ed0f2831b0e5c303c3d2ae63ac5b2b3..79d79f8911647653be9c590c00fe21dc7235f15b 100644 (file)
@@ -362,6 +362,10 @@ static int isis_zebra_read(int command, struct zclient *zclient,
        if (zapi_route_decode(zclient->ibuf, &api) < 0)
                return -1;
 
+       if (api.prefix.family == AF_INET6
+           && IN6_IS_ADDR_LINKLOCAL(&api.prefix.u.prefix6))
+               return 0;
+
        /*
         * Avoid advertising a false default reachability. (A default
         * route installed by IS-IS gets redistributed from zebra back
index 54f1735e7acc6652ba747695a0e96af0a8b8aab4..abdc82a73841983085325bf3f5456aca87e4c217 100644 (file)
@@ -226,6 +226,9 @@ static int ospf6_zebra_read_route(int command, struct zclient *zclient,
        if (CHECK_FLAG(api.message, ZAPI_MESSAGE_SRCPFX))
                return 0;
 
+       if (IN6_IS_ADDR_LINKLOCAL(&api.prefix.u.prefix6))
+               return 0;
+
        ifindex = api.nexthops[0].ifindex;
        nexthop = &api.nexthops[0].gate.ipv6;
 
index 28a57f25d007bbbcf6814d82e733df6d92b50f98..c68c066f0cbee94da2864475911740ab460a1d3b 100644 (file)
@@ -126,6 +126,9 @@ static int ripng_zebra_read_route(int command, struct zclient *zclient,
        if (CHECK_FLAG(api.message, ZAPI_MESSAGE_SRCPFX))
                return 0;
 
+       if (IN6_IS_ADDR_LINKLOCAL(&api.prefix.u.prefix6))
+               return 0;
+
        nexthop = api.nexthops[0].gate.ipv6;
        ifindex = api.nexthops[0].ifindex;