From 2674ba0ab012591edd30979ed57749d1df42ae65 Mon Sep 17 00:00:00 2001 From: ron Date: Wed, 19 Jan 2022 17:37:28 +0800 Subject: [PATCH] pimd: fix igmp packet check ip source 0.0.0.0 is OK (RFC 3376: 4.2.13.). Signed-off-by: ron --- pimd/pim_mroute.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c index f381a764cc..bce319b3ad 100644 --- a/pimd/pim_mroute.c +++ b/pimd/pim_mroute.c @@ -609,7 +609,7 @@ static int pim_mroute_msg(struct pim_instance *pim, const char *buf, connected_src = pim_if_connected_to_source(ifp, ip_hdr->ip_src); - if (!connected_src) { + if (!connected_src && !pim_addr_is_any(ip_hdr->ip_src)) { if (PIM_DEBUG_IGMP_PACKETS) { zlog_debug("Recv IGMP packet on interface: %s from a non-connected source: %pI4", ifp->name, &ip_hdr->ip_src); @@ -618,7 +618,8 @@ static int pim_mroute_msg(struct pim_instance *pim, const char *buf, } pim_ifp = ifp->info; - ifaddr = connected_src->u.prefix4; + ifaddr = connected_src ? connected_src->u.prefix4 + : pim_ifp->primary_address; igmp = pim_igmp_sock_lookup_ifaddr(pim_ifp->gm_socket_list, ifaddr); @@ -631,8 +632,9 @@ static int pim_mroute_msg(struct pim_instance *pim, const char *buf, if (igmp) pim_igmp_packet(igmp, (char *)buf, buf_size); else if (PIM_DEBUG_IGMP_PACKETS) { - zlog_debug("No IGMP socket on interface: %s with connected source: %pFX", - ifp->name, connected_src); + zlog_debug( + "No IGMP socket on interface: %s with connected source: %pI4", + ifp->name, &ifaddr); } #endif } else if (ip_hdr->ip_p) { -- 2.39.5