aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet
diff options
context:
space:
mode:
authorBrian Russell <brian@graphiant.com>2021-01-19 16:48:56 +0000
committerNeale Ranns <neale@graphiant.com>2021-01-28 10:26:00 +0000
commitbaebb22c877d98c891d4d7a20ae23dc07f918edd (patch)
tree9ca93fabed20b5a7998822ee461ae875802fd830 /src/vnet
parent89cd74427277692f77f2d38e79495592ad440a68 (diff)
ip: add frame queues to punt policer nodes
The policer is not thread safe. In order that handoff could be performed, add a frame queue to each of the punt policer nodes. Type: improvement Signed-off-by: Brian Russell <brian@graphiant.com> Change-Id: Iee50267ee7e36f0e6c95b9b43bf651648198b834
Diffstat (limited to 'src/vnet')
-rw-r--r--src/vnet/ip/ip_punt_drop.c5
-rw-r--r--src/vnet/ip/ip_punt_drop.h5
2 files changed, 10 insertions, 0 deletions
diff --git a/src/vnet/ip/ip_punt_drop.c b/src/vnet/ip/ip_punt_drop.c
index f77a0ada078..f3388007b4a 100644
--- a/src/vnet/ip/ip_punt_drop.c
+++ b/src/vnet/ip/ip_punt_drop.c
@@ -235,6 +235,11 @@ ip_punt_drop_init (vlib_main_t * vm)
fib_node_register_type (FIB_NODE_TYPE_IP_PUNT_REDIRECT,
&ip_punt_redirect_vft);
+ ip4_punt_policer_cfg.fq_index =
+ vlib_frame_queue_main_init (ip4_punt_policer_node.index, 0);
+ ip6_punt_policer_cfg.fq_index =
+ vlib_frame_queue_main_init (ip6_punt_policer_node.index, 0);
+
return (NULL);
}
diff --git a/src/vnet/ip/ip_punt_drop.h b/src/vnet/ip/ip_punt_drop.h
index 3e2796ee868..2fc1140a0bf 100644
--- a/src/vnet/ip/ip_punt_drop.h
+++ b/src/vnet/ip/ip_punt_drop.h
@@ -27,6 +27,7 @@
typedef struct ip_punt_policer_t_
{
u32 policer_index;
+ u32 fq_index;
} ip_punt_policer_t;
typedef enum ip_punt_policer_next_t_
@@ -53,6 +54,10 @@ typedef enum
} ip_punt_policer_error_t;
extern u8 *format_ip_punt_policer_trace (u8 * s, va_list * args);
+extern vlib_node_registration_t ip4_punt_policer_node;
+extern ip_punt_policer_t ip4_punt_policer_cfg;
+extern vlib_node_registration_t ip6_punt_policer_node;
+extern ip_punt_policer_t ip6_punt_policer_cfg;
/**
* IP punt policing node function