diff options
| author | G. Paul Ziemba <paulz@labn.net> | 2023-07-19 07:50:11 -0700 | 
|---|---|---|
| committer | G. Paul Ziemba <paulz@labn.net> | 2023-07-19 08:15:15 -0700 | 
| commit | 657882c430cffca3e41698b2ed76012a0ef01255 (patch) | |
| tree | 4c5d4fb9f3792cde585581e32ed5e9593017c12a /zebra/zebra_dplane.c | |
| parent | dbade07e0e1611cf9e44f1d04e71176dcc6d11f8 (diff) | |
pbrd: add vlan filters pcp/vlan-id/vlan-flags; ip-protocol any (zebra dplane)
    Subset: zebra dataplane
    Add new vlan filter fields. No kernel dataplane
    implementation yet (linux does not support).
    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/zebra_dplane.c')
| -rw-r--r-- | zebra/zebra_dplane.c | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c index 6a685267a9..c5dc0e1829 100644 --- a/zebra/zebra_dplane.c +++ b/zebra/zebra_dplane.c @@ -2,6 +2,8 @@  /*   * Zebra dataplane layer.   * Copyright (c) 2018 Volta Networks, Inc. + * Portions: + *		Copyright (c) 2021 The MITRE Corporation.   */  #ifdef HAVE_CONFIG_H @@ -278,7 +280,9 @@ struct dplane_neigh_table {   * Policy based routing rule info for the dataplane   */  struct dplane_ctx_rule { +	uint32_t seq;  	uint32_t priority; +	uint32_t unique;  	/* The route table pointed by this rule */  	uint32_t table; @@ -299,6 +303,10 @@ struct dplane_ctx_rule {  	uint32_t action_queue_id; +	uint8_t filter_pcp; +	uint16_t filter_vlan_id; +	uint16_t filter_vlan_flags; +  	char ifname[INTERFACE_NAMSIZ + 1];  	struct ethaddr smac;  	struct ethaddr dmac; @@ -3899,6 +3907,9 @@ static void dplane_ctx_rule_init_single(struct dplane_ctx_rule *dplane_rule,  	dplane_rule->ip_proto = rule->rule.filter.ip_proto;  	dplane_rule->src_port = rule->rule.filter.src_port;  	dplane_rule->dst_port = rule->rule.filter.dst_port; +	dplane_rule->filter_pcp = rule->rule.filter.pcp; +	dplane_rule->filter_vlan_id = rule->rule.filter.vlan_id; +	dplane_rule->filter_vlan_flags = rule->rule.filter.vlan_flags;  	prefix_copy(&(dplane_rule->dst_ip), &rule->rule.filter.dst_ip);  	prefix_copy(&(dplane_rule->src_ip), &rule->rule.filter.src_ip);  | 
