X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fbfd%2Fbfd_main.c;h=ea584130d58e888734830be0dc7482a71f7a0586;hb=b7b929931a07fbb27b43d5cd105f366c3e29807e;hp=6e6be9efb704700c2bed2bbbb042da3fb2bbae23;hpb=1e3417f72f5b7b6a5b056f75477d6d536196c34a;p=vpp.git diff --git a/src/vnet/bfd/bfd_main.c b/src/vnet/bfd/bfd_main.c index 6e6be9efb70..ea584130d58 100644 --- a/src/vnet/bfd/bfd_main.c +++ b/src/vnet/bfd/bfd_main.c @@ -37,14 +37,6 @@ #include #include -u32 oingoes; - -void -oingo (void) -{ - oingoes++; -} - static u64 bfd_calc_echo_checksum (u32 discriminator, u64 expire_time, u32 secret) { @@ -782,7 +774,7 @@ bfd_add_sha1_auth_section (vlib_buffer_t * b, bfd_session_t * bs) b->current_length += sizeof (*auth); pkt->pkt.head.length += sizeof (*auth); bfd_pkt_set_auth_present (&pkt->pkt); - memset (auth, 0, sizeof (*auth)); + clib_memset (auth, 0, sizeof (*auth)); auth->type_len.type = bs->auth.curr_key->auth_type; /* * only meticulous authentication types require incrementing seq number @@ -868,7 +860,7 @@ bfd_init_control_frame (bfd_main_t * bm, bfd_session_t * bs, bfd_pkt_t *pkt = vlib_buffer_get_current (b); u32 bfd_length = 0; bfd_length = sizeof (bfd_pkt_t); - memset (pkt, 0, sizeof (*pkt)); + clib_memset (pkt, 0, sizeof (*pkt)); bfd_pkt_set_version (pkt, 1); bfd_pkt_set_diag_code (pkt, bs->local_diag); bfd_pkt_set_state (pkt, bs->local_state); @@ -916,10 +908,10 @@ bfd_send_echo (vlib_main_t * vm, vlib_node_runtime_t * rt, } vlib_buffer_t *b = vlib_get_buffer (vm, bi); ASSERT (b->current_data == 0); - memset (vnet_buffer (b), 0, sizeof (*vnet_buffer (b))); + clib_memset (vnet_buffer (b), 0, sizeof (*vnet_buffer (b))); VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b); bfd_echo_pkt_t *pkt = vlib_buffer_get_current (b); - memset (pkt, 0, sizeof (*pkt)); + clib_memset (pkt, 0, sizeof (*pkt)); pkt->discriminator = bs->local_discr; pkt->expire_time_clocks = now + bs->echo_transmit_interval_clocks * bs->local_detect_mult; @@ -990,7 +982,7 @@ bfd_send_periodic (vlib_main_t * vm, vlib_node_runtime_t * rt, } vlib_buffer_t *b = vlib_get_buffer (vm, bi); ASSERT (b->current_data == 0); - memset (vnet_buffer (b), 0, sizeof (*vnet_buffer (b))); + clib_memset (vnet_buffer (b), 0, sizeof (*vnet_buffer (b))); VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b); bfd_init_control_frame (bm, bs, b); switch (bs->poll_state) @@ -1173,6 +1165,7 @@ bfd_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f) } } now = clib_cpu_time_now (); + uword *session_index; switch (event_type) { case ~0: /* no events => timeout */ @@ -1188,35 +1181,41 @@ bfd_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f) * each event or timeout */ break; case BFD_EVENT_NEW_SESSION: - bfd_lock (bm); - if (!pool_is_free_index (bm->sessions, *event_data)) - { - bfd_session_t *bs = - pool_elt_at_index (bm->sessions, *event_data); - bfd_send_periodic (vm, rt, bm, bs, now); - bfd_set_timer (bm, bs, now, 1); - } - else - { - BFD_DBG ("Ignoring event for non-existent session index %u", - (u32) * event_data); - } - bfd_unlock (bm); + vec_foreach (session_index, event_data) + { + bfd_lock (bm); + if (!pool_is_free_index (bm->sessions, *session_index)) + { + bfd_session_t *bs = + pool_elt_at_index (bm->sessions, *session_index); + bfd_send_periodic (vm, rt, bm, bs, now); + bfd_set_timer (bm, bs, now, 1); + } + else + { + BFD_DBG ("Ignoring event for non-existent session index %u", + (u32) * session_index); + } + bfd_unlock (bm); + } break; case BFD_EVENT_CONFIG_CHANGED: - bfd_lock (bm); - if (!pool_is_free_index (bm->sessions, *event_data)) - { - bfd_session_t *bs = - pool_elt_at_index (bm->sessions, *event_data); - bfd_on_config_change (vm, rt, bm, bs, now); - } - else - { - BFD_DBG ("Ignoring event for non-existent session index %u", - (u32) * event_data); - } - bfd_unlock (bm); + vec_foreach (session_index, event_data) + { + bfd_lock (bm); + if (!pool_is_free_index (bm->sessions, *session_index)) + { + bfd_session_t *bs = + pool_elt_at_index (bm->sessions, *session_index); + bfd_on_config_change (vm, rt, bm, bs, now); + } + else + { + BFD_DBG ("Ignoring event for non-existent session index %u", + (u32) * session_index); + } + bfd_unlock (bm); + } break; default: vlib_log_err (bm->log_class, "BUG: event type 0x%wx", event_type); @@ -1316,7 +1315,7 @@ bfd_main_init (vlib_main_t * vm) bm->random_seed = random_default_seed (); bm->vlib_main = vm; bm->vnet_main = vnet_get_main (); - memset (&bm->wheel, 0, sizeof (bm->wheel)); + clib_memset (&bm->wheel, 0, sizeof (bm->wheel)); bm->cpu_cps = vm->clib_time.clocks_per_second; BFD_DBG ("cps is %.2f", bm->cpu_cps); bm->default_desired_min_tx_clocks = @@ -1344,7 +1343,7 @@ bfd_get_session (bfd_main_t * bm, bfd_transport_e t) bfd_lock (bm); pool_get (bm->sessions, result); - memset (result, 0, sizeof (*result)); + clib_memset (result, 0, sizeof (*result)); result->bs_idx = result - bm->sessions; result->transport = t; const unsigned limit = 1000; @@ -2208,7 +2207,7 @@ bfd_auth_set_key (u32 conf_key_id, u8 auth_type, u8 key_len, auth_key - bm->auth_keys); } auth_key->auth_type = auth_type; - memset (auth_key->key, 0, sizeof (auth_key->key)); + clib_memset (auth_key->key, 0, sizeof (auth_key->key)); clib_memcpy (auth_key->key, key_data, key_len); return 0; #else @@ -2239,7 +2238,7 @@ bfd_auth_del_key (u32 conf_key_id) return VNET_API_ERROR_BFD_EINUSE; } hash_unset (bm->auth_key_by_conf_key_id, conf_key_id); - memset (auth_key, 0, sizeof (*auth_key)); + clib_memset (auth_key, 0, sizeof (*auth_key)); pool_put (bm->auth_keys, auth_key); } else