pimd: IGMP Query Tx when Oth. Querier exp

Send IGMP General Query and Get Gen. Query timer,
once Other Querier timer expired.

Ticket:CM-13152
Reviewed By:CCR-6189
Testing Done:
tor-4# show ip igmp interface
Interface  State          Address  V  Querier  Query Timer    Uptime
swp2          up         70.1.1.2  3    other     --:--:--  00:06:45
swp3          up         80.1.1.2  3    local     00:00:35  00:22:52

Upon disabling IGMP on remote igmp interface, after other querier expiry
sends a query and elects as Querier
tor-4# show ip igmp interface
Interface  State          Address  V  Querier  Query Timer    Uptime
swp2          up         70.1.1.2  3    local     00:01:29  00:10:16
swp3          up         80.1.1.2  3    local     00:01:14  00:26:23

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
This commit is contained in:
Chirag Shah 2017-05-06 11:18:24 -07:00
parent 5578590086
commit a91ec03e11

View File

@ -39,6 +39,7 @@
#include "pim_zebra.h"
static void group_timer_off(struct igmp_group *group);
static int pim_igmp_general_query(struct thread *t);
/* This socket is used for TXing IGMP packets only, IGMP RX happens
* in pim_mroute_msg()
@ -172,8 +173,11 @@ static int pim_igmp_other_querier_expire(struct thread *t)
/*
We are the current querier, then
re-start sending general queries.
RFC 2236 - sec 7 Other Querier
present timer expired (Send General
Query, Set Gen. Query. timer)
*/
pim_igmp_general_query_on(igmp);
pim_igmp_general_query(t);
return 0;
}
@ -497,8 +501,6 @@ int pim_igmp_packet(struct igmp_sock *igmp, char *buf, size_t len)
return -1;
}
static int pim_igmp_general_query(struct thread *t);
void pim_igmp_general_query_on(struct igmp_sock *igmp)
{
struct pim_interface *pim_ifp;