.ip4 = c->learned.router_address,
};
- /* *INDENT-OFF* */
fib_table_entry_path_add (
fib_table_get_index_for_sw_if_index (
FIB_PROTOCOL_IP4,
&nh, c->sw_if_index,
~0, 1, NULL, // no label stack
FIB_ROUTE_PATH_FLAG_NONE);
- /* *INDENT-ON* */
}
}
clib_memcpy (&c->installed, &c->learned, sizeof (c->installed));
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);
/* 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;
}
case ~0:
if (pool_elts (dcm->clients))
{
- /* *INDENT-OFF* */
next_expire_time = 1e70;
pool_foreach (c, dcm->clients)
{
clib_warning ("BUG");
timeout = 1.13;
}
- /* *INDENT-ON* */
}
else
timeout = 1000.0;
return 0;
}
-/* *INDENT-OFF* */
VLIB_REGISTER_NODE (dhcp_client_process_node,static) = {
.function = dhcp_client_process,
.type = VLIB_NODE_TYPE_PROCESS,
.n_errors = ARRAY_LEN(dhcp_client_process_stat_strings),
.error_strings = dhcp_client_process_stat_strings,
};
-/* *INDENT-ON* */
static clib_error_t *
show_dhcp_client_command_fn (vlib_main_t * vm,
return 0;
}
- /* *INDENT-OFF* */
pool_foreach (c, dcm->clients)
{
vlib_cli_output (vm, "%U",
format_dhcp_client, dcm,
c, verbose);
}
- /* *INDENT-ON* */
return 0;
}
-/* *INDENT-OFF* */
VLIB_CLI_COMMAND (show_dhcp_client_command, static) = {
.path = "show dhcp client",
.short_help = "show dhcp client [intfc <intfc>][verbose]",
.function = show_dhcp_client_command_fn,
};
-/* *INDENT-ON* */
int
dhcp_client_main_t *dcm = &dhcp_client_main;
dhcp_client_t *c;
- /* *INDENT-OFF* */
pool_foreach (c, dcm->clients)
{
if (!cb(c, ctx))
break;
}
- /* *INDENT-ON* */
}
return 0;
}
-/* *INDENT-OFF* */
VLIB_CLI_COMMAND (dhcp_client_set_command, static) = {
.path = "set dhcp client",
.short_help = "set dhcp client [del] intfc <interface> [hostname <name>]",
.function = dhcp_client_set_command_fn,
};
-/* *INDENT-ON* */
static clib_error_t *
dhcp_client_init (vlib_main_t * vm)