diff options
Diffstat (limited to 'src/vnet/ip/ip4_punt_drop.c')
-rw-r--r-- | src/vnet/ip/ip4_punt_drop.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/vnet/ip/ip4_punt_drop.c b/src/vnet/ip/ip4_punt_drop.c index 94c260acc57..20430adb2f3 100644 --- a/src/vnet/ip/ip4_punt_drop.c +++ b/src/vnet/ip/ip4_punt_drop.c @@ -51,6 +51,29 @@ ip_punt_policer_t ip4_punt_policer_cfg = { }; #endif /* CLIB_MARCH_VARIANT */ +static char *ip4_punt_policer_handoff_error_strings[] = { "congestion drop" }; + +VLIB_NODE_FN (ip4_punt_policer_handoff_node) +(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame) +{ + return policer_handoff (vm, node, frame, ip4_punt_policer_cfg.fq_index, + ip4_punt_policer_cfg.policer_index); +} + +VLIB_REGISTER_NODE (ip4_punt_policer_handoff_node) = { + .name = "ip4-punt-policer-handoff", + .vector_size = sizeof (u32), + .format_trace = format_policer_handoff_trace, + .type = VLIB_NODE_TYPE_INTERNAL, + .n_errors = ARRAY_LEN(ip4_punt_policer_handoff_error_strings), + .error_strings = ip4_punt_policer_handoff_error_strings, + + .n_next_nodes = 1, + .next_nodes = { + [0] = "error-drop", + }, +}; + static char *ip4_punt_policer_error_strings[] = { #define _(sym,string) string, foreach_ip_punt_policer_error @@ -77,6 +100,7 @@ VLIB_REGISTER_NODE (ip4_punt_policer_node) = { .next_nodes = { [IP_PUNT_POLICER_NEXT_DROP] = "ip4-drop", + [IP_PUNT_POLICER_NEXT_HANDOFF] = "ip4-punt-policer-handoff", }, }; |