-/* Even type for send_garp_na_process */
-enum
-{
- SEND_GARP_NA = 1,
-} dpdk_send_garp_na_process_event_t;
-
-static vlib_node_registration_t send_garp_na_proc_node;
-
-static uword
-send_garp_na_process (vlib_main_t * vm,
- vlib_node_runtime_t * rt, vlib_frame_t * f)
-{
- vnet_main_t *vnm = vnet_get_main ();
- uword event_type, *event_data = 0;
-
- while (1)
- {
- u32 i;
- uword dpdk_port;
- vlib_process_wait_for_event (vm);
- event_type = vlib_process_get_events (vm, &event_data);
- ASSERT (event_type == SEND_GARP_NA);
- for (i = 0; i < vec_len (event_data); i++)
- {
- dpdk_port = event_data[i];
- if (i < 5) /* wait 0.2 sec for link to settle, max total 1 sec */
- vlib_process_suspend (vm, 0.2);
- dpdk_device_t *xd = &dpdk_main.devices[dpdk_port];
- u32 hw_if_index = xd->hw_if_index;
- vnet_hw_interface_t *hi = vnet_get_hw_interface (vnm, hw_if_index);
- dpdk_update_link_state (xd, vlib_time_now (vm));
- send_ip4_garp (vm, hi);
- send_ip6_na (vm, hi);
- }
- vec_reset_length (event_data);
- }
- return 0;
-}
-
-/* *INDENT-OFF* */
-VLIB_REGISTER_NODE (send_garp_na_proc_node, static) = {
- .function = send_garp_na_process,
- .type = VLIB_NODE_TYPE_PROCESS,
- .name = "send-garp-na-process",
-};
-/* *INDENT-ON* */
-