diff options
Diffstat (limited to 'src/vnet/ip6-nd/ip6_nd.c')
-rw-r--r-- | src/vnet/ip6-nd/ip6_nd.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/vnet/ip6-nd/ip6_nd.c b/src/vnet/ip6-nd/ip6_nd.c index 772c811ae20..763aca290e6 100644 --- a/src/vnet/ip6-nd/ip6_nd.c +++ b/src/vnet/ip6-nd/ip6_nd.c @@ -90,6 +90,7 @@ icmp6_neighbor_solicitation_or_advertisement (vlib_main_t * vm, icmp6_neighbor_discovery_ethernet_link_layer_address_option_t *o0; u32 bi0, options_len0, sw_if_index0, next0, error0; u32 ip6_sadd_link_local, ip6_sadd_unspecified; + ip_neighbor_counter_type_t c_type; int is_rewrite0; u32 ni0; @@ -148,7 +149,6 @@ icmp6_neighbor_solicitation_or_advertisement (vlib_main_t * vm, if (PREDICT_TRUE (error0 == ICMP6_ERROR_NONE && o0 != 0 && !ip6_sadd_unspecified)) { - /* *INDENT-OFF* */ ip_neighbor_learn_t learn = { .sw_if_index = sw_if_index0, .ip = { @@ -158,7 +158,6 @@ icmp6_neighbor_solicitation_or_advertisement (vlib_main_t * vm, h0->target_address), } }; - /* *INDENT-ON* */ memcpy (&learn.mac, o0->ethernet_address, sizeof (learn.mac)); ip_neighbor_learn_dp (&learn); } @@ -230,16 +229,24 @@ icmp6_neighbor_solicitation_or_advertisement (vlib_main_t * vm, } if (is_solicitation) - next0 = (error0 != ICMP6_ERROR_NONE - ? ICMP6_NEIGHBOR_SOLICITATION_NEXT_DROP - : ICMP6_NEIGHBOR_SOLICITATION_NEXT_REPLY); + { + next0 = (error0 != ICMP6_ERROR_NONE ? + ICMP6_NEIGHBOR_SOLICITATION_NEXT_DROP : + ICMP6_NEIGHBOR_SOLICITATION_NEXT_REPLY); + c_type = IP_NEIGHBOR_CTR_REQUEST; + } else { next0 = 0; error0 = error0 == ICMP6_ERROR_NONE ? ICMP6_ERROR_NEIGHBOR_ADVERTISEMENTS_RX : error0; + c_type = IP_NEIGHBOR_CTR_REPLY; } + vlib_increment_simple_counter ( + &ip_neighbor_counters[AF_IP6].ipnc[VLIB_RX][c_type], + vm->thread_index, sw_if_index0, 1); + if (is_solicitation && error0 == ICMP6_ERROR_NONE) { icmp6_send_neighbor_advertisement (vm, p0, ip0, h0, o0, @@ -334,7 +341,6 @@ icmp6_neighbor_advertisement (vlib_main_t * vm, 0); } -/* *INDENT-OFF* */ VLIB_REGISTER_NODE (ip6_icmp_neighbor_solicitation_node,static) = { .function = icmp6_neighbor_solicitation, @@ -365,7 +371,6 @@ VLIB_REGISTER_NODE (ip6_icmp_neighbor_advertisement_node,static) = [0] = "ip6-punt", }, }; -/* *INDENT-ON* */ static u8 * format_ip6_nd (u8 * s, va_list * args) @@ -418,12 +423,10 @@ ip6_nd_init (vlib_main_t * vm) return 0; } -/* *INDENT-OFF* */ VLIB_INIT_FUNCTION (ip6_nd_init) = { .runs_after = VLIB_INITS("icmp6_init"), }; -/* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON |