diff options
author | David Lamparter <equinox@opensourcerouting.org> | 2021-08-24 15:25:48 +0200 |
---|---|---|
committer | David Lamparter <equinox@opensourcerouting.org> | 2021-08-27 10:42:53 +0200 |
commit | dda4d23ccad4264d80cbf39091b08ed070a3791b (patch) | |
tree | 111f6a18301704e082048c1e0c1ae8a83a610a8b /pimd/pim_iface.c | |
parent | pimd: de-circularize includes (diff) | |
download | frr-dda4d23ccad4264d80cbf39091b08ed070a3791b.tar.xz frr-dda4d23ccad4264d80cbf39091b08ed070a3791b.zip |
pimd: IGMP memberships are not querier specific
IGMP group/source memberships are a property of the interface; the
particular IP address that the querier used to collect the data is
irrelevant.
... and IGMP packets get delivered only once to pimd anyway, since we
receive them on the "global" per-VRF IGMP socket. (The one in igmp_sock
is only used for sending queries.)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'pimd/pim_iface.c')
-rw-r--r-- | pimd/pim_iface.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c index 0b28a3e84..eb19cf4dd 100644 --- a/pimd/pim_iface.c +++ b/pimd/pim_iface.c @@ -156,14 +156,12 @@ struct pim_interface *pim_if_new(struct interface *ifp, bool igmp, bool pim, PIM_IF_DO_IGMP_LISTEN_ALLROUTERS(pim_ifp->options); pim_ifp->igmp_join_list = NULL; - pim_ifp->igmp_socket_list = NULL; pim_ifp->pim_neighbor_list = NULL; pim_ifp->upstream_switch_list = NULL; pim_ifp->pim_generation_id = 0; /* list of struct igmp_sock */ - pim_ifp->igmp_socket_list = list_new(); - pim_ifp->igmp_socket_list->del = (void (*)(void *))igmp_sock_free; + pim_igmp_if_init(pim_ifp, ifp); /* list of struct pim_neighbor */ pim_ifp->pim_neighbor_list = list_new(); @@ -214,7 +212,8 @@ void pim_if_delete(struct interface *ifp) pim_if_del_vif(ifp); pim_ifp->pim->mcast_if_count--; - list_delete(&pim_ifp->igmp_socket_list); + pim_igmp_if_fini(pim_ifp); + list_delete(&pim_ifp->pim_neighbor_list); list_delete(&pim_ifp->upstream_switch_list); list_delete(&pim_ifp->sec_addr_list); |