X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fabf%2Fabf_itf_attach.c;h=337eed8697d4c978bf86725a62ae029d3c847edb;hb=59f71132e;hp=67aa5b1b1fa0b0ae9546c5ca449b3fe4734744e6;hpb=7d98a12f29d5b9696df98b8af2f128614a4f0360;p=vpp.git diff --git a/src/plugins/abf/abf_itf_attach.c b/src/plugins/abf/abf_itf_attach.c index 67aa5b1b1fa..337eed8697d 100644 --- a/src/plugins/abf/abf_itf_attach.c +++ b/src/plugins/abf/abf_itf_attach.c @@ -184,7 +184,7 @@ abf_itf_attach (fib_protocol_t fproto, return (VNET_API_ERROR_ENTRY_ALREADY_EXISTS); /* - * construt a new attachemnt object + * construct a new attachment object */ pool_get (abf_itf_attach_pool, aia); @@ -210,7 +210,7 @@ abf_itf_attach (fib_protocol_t fproto, if (1 == vec_len (abf_per_itf[fproto][sw_if_index])) { /* - * when enabling the first ABF polciy on the interface + * when enabling the first ABF policy on the interface * we need to enable the interface input feature */ vnet_feature_enable_disable ((FIB_PROTOCOL_IP4 == fproto ? @@ -236,7 +236,7 @@ abf_itf_attach (fib_protocol_t fproto, abf_setup_acl_lc (fproto, sw_if_index); /* - * become a child of the ABF poilcy so we are notified when + * become a child of the ABF policy so we are notified when * its forwarding changes. */ aia->aia_sibling = fib_node_child_add (abf_policy_fib_node_type, @@ -253,15 +253,15 @@ abf_itf_detach (fib_protocol_t fproto, u32 policy_id, u32 sw_if_index) u32 index; /* - * check this is a valid attahment + * check this is a valid attachment */ aia = abf_itf_attach_db_find (policy_id, sw_if_index); if (NULL == aia) - return (VNET_API_ERROR_ENTRY_ALREADY_EXISTS); + return (VNET_API_ERROR_NO_SUCH_ENTRY); /* - * first remove from the interface's vecotr + * first remove from the interface's vector */ ASSERT (abf_per_itf[fproto]); ASSERT (abf_per_itf[fproto][sw_if_index]); @@ -275,7 +275,7 @@ abf_itf_detach (fib_protocol_t fproto, u32 policy_id, u32 sw_if_index) if (0 == vec_len (abf_per_itf[fproto][sw_if_index])) { /* - * when deleting the last ABF polciy on the interface + * when deleting the last ABF policy on the interface * we need to disable the interface input feature */ vnet_feature_enable_disable ((FIB_PROTOCOL_IP4 == fproto ? @@ -307,7 +307,7 @@ abf_itf_detach (fib_protocol_t fproto, u32 policy_id, u32 sw_if_index) aia->aia_abf, aia->aia_sibling); /* - * remove the attahcment from the DB + * remove the attachment from the DB */ abf_itf_attach_db_del (policy_id, sw_if_index); @@ -331,7 +331,7 @@ format_abf_intf_attach (u8 * s, va_list * args) abf_policy_t *ap; ap = abf_policy_get (aia->aia_abf); - s = format (s, "abf-interface-attach: policy:%d prioity:%d", + s = format (s, "abf-interface-attach: policy:%d priority:%d", ap->ap_id, aia->aia_prio); s = format (s, "\n %U", format_dpo_id, &aia->aia_dpo, 2); @@ -505,12 +505,12 @@ abf_input_inline (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame, fib_protocol_t fproto) { - u32 n_left_from, *from, *to_next, next_index, matches; + u32 n_left_from, *from, *to_next, next_index, matches, misses; from = vlib_frame_vector_args (frame); n_left_from = frame->n_vectors; next_index = node->cached_next_index; - matches = 0; + matches = misses = 0; while (n_left_from > 0) { @@ -530,6 +530,7 @@ abf_input_inline (vlib_main_t * vm, u32 match_acl_pos = ~0; u32 match_rule_index = ~0; u32 trace_bitmap = 0; + u32 lc_index; u8 action; bi0 = from[0]; @@ -549,7 +550,7 @@ abf_input_inline (vlib_main_t * vm, /* * check if any of the policies attached to this interface matches. */ - u32 lc_index = abf_alctx_per_itf[fproto][sw_if_index0]; + lc_index = abf_alctx_per_itf[fproto][sw_if_index0]; /* A non-inline version looks like this: @@ -589,6 +590,7 @@ abf_input_inline (vlib_main_t * vm, * move on down the feature arc */ vnet_feature_next (&next0, b0); + misses++; } if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED)) @@ -614,6 +616,11 @@ abf_input_inline (vlib_main_t * vm, abf_ip4_node.index : abf_ip6_node.index), ABF_ERROR_MATCHED, matches); + vlib_node_increment_counter (vm, + (fproto = FIB_PROTOCOL_IP6 ? + abf_ip4_node.index : + abf_ip6_node.index), + ABF_ERROR_MISSED, misses); return frame->n_vectors; } @@ -759,12 +766,17 @@ abf_itf_bond_init (vlib_main_t * vm) return (acl_init_res); abf_acl_user_id = - acl_plugin.register_user_module ("abp plugin", "sw_if_index", NULL); + acl_plugin.register_user_module ("ABF plugin", "sw_if_index", NULL); return (NULL); } -VLIB_INIT_FUNCTION (abf_itf_bond_init); +/* *INDENT-OFF* */ +VLIB_INIT_FUNCTION (abf_itf_bond_init) = +{ + .runs_after = VLIB_INITS("acl_init"), +}; +/* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON