summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2021-01-11 15:51:24 +0100
committerGitHub <noreply@github.com>2021-01-11 15:51:24 +0100
commitaa6fdabb7323407ffcd95a51e617cb0d1791443a (patch)
tree172fc62b238c51f6788b3ab69c97e74021a78878
parentMerge pull request #7823 from donaldsharp/zebra_delay_timer (diff)
parentpimd: SPT-bit is not set to false as per RFC section in one flow (diff)
downloadfrr-aa6fdabb7323407ffcd95a51e617cb0d1791443a.tar.xz
frr-aa6fdabb7323407ffcd95a51e617cb0d1791443a.zip
Merge pull request #7828 from mobash-rasool/pim-fixes-3
pimd: SPT-bit is not set to false as per RFC section in one flow
-rw-r--r--pimd/pim_mroute.c2
-rw-r--r--pimd/pim_upstream.c7
2 files changed, 8 insertions, 1 deletions
diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c
index 0bccba397..23259900b 100644
--- a/pimd/pim_mroute.c
+++ b/pimd/pim_mroute.c
@@ -628,7 +628,7 @@ static int pim_mroute_msg(struct pim_instance *pim, const char *buf,
ifaddr = connected_src->u.prefix4;
igmp = pim_igmp_sock_lookup_ifaddr(pim_ifp->igmp_socket_list, ifaddr);
- if (PIM_DEBUG_MROUTE) {
+ if (PIM_DEBUG_IGMP_PACKETS) {
zlog_debug(
"%s(%s): igmp kernel upcall on %s(%p) for %pI4 -> %pI4",
__func__, pim->vrf->name, ifp->name, igmp,
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index d95b092d9..9899172e6 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -749,6 +749,13 @@ void pim_upstream_switch(struct pim_instance *pim, struct pim_upstream *up,
bool send_xg_jp = false;
forward_off(up);
+ /*
+ * RFC 4601 Sec 4.5.7:
+ * JoinDesired(S,G) -> False, set SPTbit to false.
+ */
+ if (up->sg.src.s_addr != INADDR_ANY)
+ up->sptbit = PIM_UPSTREAM_SPTBIT_FALSE;
+
if (old_state == PIM_UPSTREAM_JOINED)
pim_msdp_up_join_state_changed(pim, up);