diff options
| author | Donald Sharp <donaldsharp72@gmail.com> | 2023-07-20 08:01:24 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-20 08:01:24 -0400 | 
| commit | 1b1d256f030ce34751d51ff4b4bd57ba51248f68 (patch) | |
| tree | a89ff0b8c511f25a74f3231e21e04f6aae914cbc /zebra/zapi_msg.c | |
| parent | 698d53bf588e38590d888793ab6a91a21650a037 (diff) | |
| parent | 8b330fe8b78886b073368de92456ca9900a2a6a3 (diff) | |
Merge pull request #14026 from LabNConsulting/pbr-add-vlan-filters
pbrd: 1/3: add vty support for vlan filtering and send to zebra
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 6a5b0b4a0e..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> @@ -3195,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); @@ -3209,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); @@ -3241,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( @@ -3511,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)) {  | 
