summaryrefslogtreecommitdiff
path: root/zebra/zebra_dplane.c
diff options
context:
space:
mode:
authorG. Paul Ziemba <paulz@labn.net>2023-07-19 07:50:11 -0700
committerG. Paul Ziemba <paulz@labn.net>2023-07-19 08:15:15 -0700
commit657882c430cffca3e41698b2ed76012a0ef01255 (patch)
tree4c5d4fb9f3792cde585581e32ed5e9593017c12a /zebra/zebra_dplane.c
parentdbade07e0e1611cf9e44f1d04e71176dcc6d11f8 (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.c11
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);