diff options
| author | G. Paul Ziemba <paulz@labn.net> | 2023-07-19 07:59:04 -0700 |
|---|---|---|
| committer | G. Paul Ziemba <paulz@labn.net> | 2023-07-19 08:14:49 -0700 |
| commit | dbade07e0e1611cf9e44f1d04e71176dcc6d11f8 (patch) | |
| tree | d448c7b6dd8c1eef0d2d72e024bd257aec881570 /zebra/zapi_msg.c | |
| parent | bfd3e8e012f22c62f628f836532e9805b10ae493 (diff) | |
pbrd: add vlan filters pcp/vlan-id/vlan-flags; ip-protocol any (zapi)
Subset: ZAPI changes to send the new data
Also adds filter_bm field; currently for PBR_FILTER_PCP, but in the
future to be used for all of the filter fields.
Changes by:
Josh Werner <joshuawerner@mitre.org>
Eli Baum <ebaum@mitre.org>
G. Paul Ziemba <paulz@labn.net>
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
Diffstat (limited to 'zebra/zapi_msg.c')
| -rw-r--r-- | zebra/zapi_msg.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/zebra/zapi_msg.c b/zebra/zapi_msg.c index 5ac8754058..ab491ea525 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> @@ -3199,6 +3201,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 +3218,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 +3253,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 +3531,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)) { |
