mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 23:58:44 +00:00
pim6d, pimd: Discard (*,G) prune if WC bit is set but RPT bit is unset.
As per RFC 7761, Section 4.9.1 The RPT (or Rendezvous Point Tree) bit is a 1-bit value for use with PIM Join/Prune messages (see Section 4.9.5.1). If the WC bit is 1, the RPT bit MUST be 1. ANVL conformance test case is trying to verify this and is failing. Issue: #12354 Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
This commit is contained in:
parent
c6950cb343
commit
a23a485cbf
@ -140,8 +140,21 @@ static void recv_prune(struct interface *ifp, struct pim_neighbor *neigh,
|
|||||||
|
|
||||||
++pim_ifp->pim_ifstat_prune_recv;
|
++pim_ifp->pim_ifstat_prune_recv;
|
||||||
|
|
||||||
if ((source_flags & PIM_RPT_BIT_MASK)
|
if (CHECK_FLAG(source_flags, PIM_WILDCARD_BIT_MASK)) {
|
||||||
&& (source_flags & PIM_WILDCARD_BIT_MASK)) {
|
/* As per RFC 7761 Section 4.9.1:
|
||||||
|
* The RPT (or Rendezvous Point Tree) bit is a 1-bit value for
|
||||||
|
* use with PIM Join/Prune messages (see Section 4.9.5.1). If
|
||||||
|
* the WC bit is 1, the RPT bit MUST be 1.
|
||||||
|
*/
|
||||||
|
if (!CHECK_FLAG(source_flags, PIM_RPT_BIT_MASK)) {
|
||||||
|
if (PIM_DEBUG_PIM_J_P)
|
||||||
|
zlog_debug(
|
||||||
|
"Discarding (*,G)=%pSG prune since WC bit is set but RPT bit is unset",
|
||||||
|
sg);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* RFC 4601 Section 4.5.2:
|
* RFC 4601 Section 4.5.2:
|
||||||
* Received Prune(*,G) messages are processed even if the
|
* Received Prune(*,G) messages are processed even if the
|
||||||
|
Loading…
Reference in New Issue
Block a user