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>
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);
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;