diff options
Diffstat (limited to 'zebra/zapi_msg.c')
| -rw-r--r-- | zebra/zapi_msg.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/zebra/zapi_msg.c b/zebra/zapi_msg.c index 5ac8754058..928cb3f9b7 100644 --- a/zebra/zapi_msg.c +++ b/zebra/zapi_msg.c @@ -5,6 +5,8 @@ * Copyright (C) 1997-1999 Kunihiro Ishiguro * Copyright (C) 2015-2018 Cumulus Networks, Inc. * et al. + * Copyright (c) 2021 The MITRE Corporation. + * Copyright (c) 2023 LabN Consulting, L.L.C. */ #include <zebra.h> @@ -1337,8 +1339,6 @@ static void zread_fec_register(ZAPI_HANDLER_ARGS) s = msg; zvrf = zebra_vrf_lookup_by_id(VRF_DEFAULT); - if (!zvrf) - return; /* * The minimum amount of data that can be sent for one fec @@ -1400,8 +1400,6 @@ static void zread_fec_unregister(ZAPI_HANDLER_ARGS) s = msg; zvrf = zebra_vrf_lookup_by_id(VRF_DEFAULT); - if (!zvrf) - return; /* * The minimum amount of data that can be sent for one @@ -3199,6 +3197,9 @@ static inline void zread_rule(ZAPI_HANDLER_ARGS) STREAM_GETL(s, zpr.rule.seq); STREAM_GETL(s, zpr.rule.priority); STREAM_GETL(s, zpr.rule.unique); + + STREAM_GETL(s, zpr.rule.filter.filter_bm); + STREAM_GETC(s, zpr.rule.filter.ip_proto); STREAM_GETC(s, zpr.rule.filter.src_ip.family); STREAM_GETC(s, zpr.rule.filter.src_ip.prefixlen); @@ -3213,10 +3214,13 @@ static inline void zread_rule(ZAPI_HANDLER_ARGS) STREAM_GETC(s, zpr.rule.filter.dsfield); STREAM_GETL(s, zpr.rule.filter.fwmark); - STREAM_GETL(s, zpr.rule.action.queue_id); + STREAM_GETC(s, zpr.rule.filter.pcp); + STREAM_GETW(s, zpr.rule.action.pcp); + STREAM_GETW(s, zpr.rule.filter.vlan_id); + STREAM_GETW(s, zpr.rule.filter.vlan_flags); STREAM_GETW(s, zpr.rule.action.vlan_id); STREAM_GETW(s, zpr.rule.action.vlan_flags); - STREAM_GETW(s, zpr.rule.action.pcp); + STREAM_GETL(s, zpr.rule.action.queue_id); STREAM_GETL(s, zpr.rule.action.table); STREAM_GET(ifname, s, INTERFACE_NAMSIZ); @@ -3245,6 +3249,14 @@ static inline void zread_rule(ZAPI_HANDLER_ARGS) if (zpr.rule.filter.fwmark) zpr.rule.filter.filter_bm |= PBR_FILTER_FWMARK; + /* NB PBR_FILTER_PCP should already be set by sender */ + + if (zpr.rule.filter.vlan_flags) + zpr.rule.filter.filter_bm |= PBR_FILTER_VLAN_FLAGS; + + if (zpr.rule.filter.vlan_id) + zpr.rule.filter.filter_bm |= PBR_FILTER_VLAN_ID; + if (!(zpr.rule.filter.src_ip.family == AF_INET || zpr.rule.filter.src_ip.family == AF_INET6)) { zlog_warn( @@ -3515,7 +3527,7 @@ static inline void zread_ipset_entry(ZAPI_HANDLER_ARGS) if (zpi.src_port_max != 0) zpi.filter_bm |= PBR_FILTER_SRC_PORT_RANGE; if (zpi.proto != 0) - zpi.filter_bm |= PBR_FILTER_PROTO; + zpi.filter_bm |= PBR_FILTER_IP_PROTOCOL; if (!(zpi.dst.family == AF_INET || zpi.dst.family == AF_INET6)) { |
