static void
dhcp_client_reset (dhcp_client_main_t * dcm, dhcp_client_t * c)
{
+ vlib_worker_thread_barrier_sync (dcm->vlib_main);
if (c->client_detect_feature_enabled == 1)
{
vnet_feature_enable_disable ("ip4-unicast",
c->sw_if_index, 0, 0, 0);
c->client_detect_feature_enabled = 0;
}
-
dhcp_client_release_address (dcm, c);
+ vlib_worker_thread_barrier_release (dcm->vlib_main);
+
clib_memset (&c->learned, 0, sizeof (c->installed));
c->state = DHCP_DISCOVER;
c->next_transmit = vlib_time_now (dcm->vlib_main);
udp_header_t * udp, dhcp_header_t * dhcp)
{
dhcp_client_main_t *dcm = &dhcp_client_main;
- vlib_main_t *vm = dcm->vlib_main;
+ vlib_main_t *vm = vlib_get_main ();
dhcp_client_t *c;
uword *p;
- f64 now = vlib_time_now (dcm->vlib_main);
+ f64 now = vlib_time_now (vm);
u8 dhcp_message_type = 0;
dhcp_option_t *o;
/* Build a dhcpv4 pkt from whole cloth */
b = vlib_get_buffer (vm, bi);
- VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b);
ASSERT (b->current_data == 0);
*/
if (c->client_detect_feature_enabled == 0)
{
+ vlib_worker_thread_barrier_sync (dcm->vlib_main);
vnet_feature_enable_disable ("ip4-unicast",
"ip4-dhcp-client-detect",
c->sw_if_index, 1 /* enable */ , 0, 0);
+ vlib_worker_thread_barrier_release (dcm->vlib_main);
c->client_detect_feature_enabled = 1;
}
*/
if (c->client_detect_feature_enabled == 0)
{
+ vlib_worker_thread_barrier_sync (dcm->vlib_main);
vnet_feature_enable_disable ("ip4-unicast",
"ip4-dhcp-client-detect",
c->sw_if_index, 1 /* enable */ , 0, 0);
+ vlib_worker_thread_barrier_release (dcm->vlib_main);
c->client_detect_feature_enabled = 1;
}
{
/* *INDENT-OFF* */
next_expire_time = 1e70;
- pool_foreach (c, dcm->clients,
- ({
+ pool_foreach (c, dcm->clients)
+ {
this_next_expire_time = dhcp_client_sm
(now, timeout, (uword) (c - dcm->clients));
next_expire_time = this_next_expire_time < next_expire_time ?
this_next_expire_time : next_expire_time;
- }));
+ }
if (next_expire_time > now)
timeout = next_expire_time - now;
else
}
/* *INDENT-OFF* */
- pool_foreach (c, dcm->clients,
- ({
+ pool_foreach (c, dcm->clients)
+ {
vlib_cli_output (vm, "%U",
format_dhcp_client, dcm,
c, verbose);
- }));
+ }
/* *INDENT-ON* */
return 0;
dhcp_client_t *c;
/* *INDENT-OFF* */
- pool_foreach (c, dcm->clients,
- ({
+ pool_foreach (c, dcm->clients)
+ {
if (!cb(c, ctx))
break;
- }));
+ }
/* *INDENT-ON* */
}
dcm->seed = (u32) clib_cpu_time_now ();
dhcp_logger = vlib_log_register_class ("dhcp", "client");
- DHCP_INFO ("plugin initialized");
+ DHCP_DBG ("plugin initialized");
return 0;
}