for (i = 0; i < n; i++)
{
- if ((!ip4_address_compare (a, &group_ptr (igmp, l)->dst_address)) &&
+ if ((!ip4_address_compare (a, &(group_ptr (igmp, l)->dst_address))) &&
(type == group_ptr (igmp, l)->type))
{
rv = 1;
igmp_main_t *im = &igmp_main;
uword *event_data = 0, event_type;
f64 time_start;
- u8 enabled = 0;
igmp_timer_t *timer = NULL;
while (1)
{
- if (enabled)
+ if (NULL != timer)
vlib_process_wait_for_event_or_clock (vm,
timer->exp_time - time_start);
else
if (event_type == IGMP_PROCESS_EVENT_UPDATE_TIMER)
goto next_timer;
- DBG ("time: %f", vlib_time_now (vm));
+ IGMP_DBG ("time: %f", vlib_time_now (vm));
/* timer expired */
- timer->func (vm, rt, im, timer);
+ if (NULL != timer)
+ timer->func (vm, rt, im, timer);
next_timer:
timer = igmp_get_next_timer (im);
- if (timer == NULL)
- enabled = 0;
- else
- enabled = 1;
}
return 0;
}
static clib_error_t *
igmp_init (vlib_main_t * vm)
{
+ clib_error_t *error;
igmp_main_t *im = &igmp_main;
vlib_thread_main_t *tm = vlib_get_thread_main ();
int i;
+ if ((error = vlib_call_init_function (vm, ip4_lookup_init)))
+ return error;
im->igmp_config_by_sw_if_index =
hash_create_mem (0, sizeof (u32), sizeof (uword));
mfib_table_entry_update (0, &mpfx1, MFIB_SOURCE_DEFAULT_ROUTE, 0,
MFIB_ENTRY_FLAG_ACCEPT_ALL_ITF);
- return 0;
+ return (error);
}
VLIB_INIT_FUNCTION (igmp_init);