summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <donaldsharp72@gmail.com>2022-06-08 08:15:58 -0400
committerGitHub <noreply@github.com>2022-06-08 08:15:58 -0400
commit71623b304e78f987b7d730e431f79324c787a2dd (patch)
tree91df81950b3bb1561dda786e2af9324defe628c4
parent087350d968e92f1f4f24ae0aae6de2722088fe79 (diff)
parente502ecad11ec444a83bf7ad87e0c446d986bb8c7 (diff)
Merge pull request #11356 from mobash-rasool/pim-rfc-conform
pimd: Handle receive of (*,G) register stop with src addr as 0
-rw-r--r--pimd/pim_register.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/pimd/pim_register.c b/pimd/pim_register.c
index 6b76f4c49b..1945d99d21 100644
--- a/pimd/pim_register.c
+++ b/pimd/pim_register.c
@@ -175,7 +175,12 @@ int pim_register_stop_recv(struct interface *ifp, uint8_t *buf, int buf_size)
rp = RP(pim_ifp->pim, sg.grp);
if (rp) {
rpf_addr = pim_addr_from_prefix(&rp->rpf_addr);
- if (pim_addr_cmp(sg.src, rpf_addr) == 0) {
+ /* As per RFC 7761, Section 4.9.4:
+ * A special wildcard value consisting of an address field of
+ * all zeros can be used to indicate any source.
+ */
+ if ((pim_addr_cmp(sg.src, rpf_addr) == 0) ||
+ pim_addr_is_any(sg.src)) {
handling_star = true;
sg.src = PIMADDR_ANY;
}