]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd, zebra: Flags should be 0 for unregister 1411/head
authorDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 14 Nov 2017 00:06:26 +0000 (19:06 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 14 Nov 2017 00:06:26 +0000 (19:06 -0500)
The flags value is not used for unregister events.  Let's purposefully
not send anything and purposefully not accept non 0 for it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
bgpd/bgp_nht.c
zebra/zserv.c

index fc44e5e9b27cae2c5787d84a82bbf96d53a41ecf..625d4f844260d03bb0c58977f7b2a979d074d974 100644 (file)
@@ -588,8 +588,10 @@ static void sendmsg_zebra_rnh(struct bgp_nexthop_cache *bnc, int command)
        s = zclient->obuf;
        stream_reset(s);
        zclient_create_header(s, command, bnc->bgp->vrf_id);
-       if (CHECK_FLAG(bnc->flags, BGP_NEXTHOP_CONNECTED)
-           || CHECK_FLAG(bnc->flags, BGP_STATIC_ROUTE_EXACT_MATCH))
+       if ((command == ZEBRA_NEXTHOP_REGISTER ||
+            command == ZEBRA_IMPORT_ROUTE_REGISTER) &&
+           (CHECK_FLAG(bnc->flags, BGP_NEXTHOP_CONNECTED)
+            || CHECK_FLAG(bnc->flags, BGP_STATIC_ROUTE_EXACT_MATCH)))
                stream_putc(s, 1);
        else
                stream_putc(s, 0);
index fdd20d65a1614c4a1a706a3c36ab6cac37b0d6e2..9d9a7cd783b87ae92568e50d9786ccd3d1ae0d74 100644 (file)
@@ -782,9 +782,12 @@ static int zserv_rnh_unregister(struct zserv *client, u_short length,
        s = client->ibuf;
 
        while (l < length) {
-               u_char noval;
+               uint8_t flags;
+
+               STREAM_GETC(s, flags);
+               if (flags != 0)
+                       goto stream_failure;
 
-               STREAM_GETC(s, noval);
                STREAM_GETW(s, p.family);
                STREAM_GETC(s, p.prefixlen);
                l += 4;