summaryrefslogtreecommitdiff
path: root/zebra/zapi_msg.c
diff options
context:
space:
mode:
authorG. Paul Ziemba <paulz@labn.net>2023-07-19 07:59:04 -0700
committerG. Paul Ziemba <paulz@labn.net>2023-07-19 08:14:49 -0700
commitdbade07e0e1611cf9e44f1d04e71176dcc6d11f8 (patch)
treed448c7b6dd8c1eef0d2d72e024bd257aec881570 /zebra/zapi_msg.c
parentbfd3e8e012f22c62f628f836532e9805b10ae493 (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.c22
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)) {