mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-14 05:43:09 +00:00
pim6d: IPv6-adjust upstream_rpf_genid_changed
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
5775d4be08
commit
101b31041a
@ -1263,7 +1263,7 @@ void pim_upstream_update_join_desired(struct pim_instance *pim,
|
|||||||
it so that it expires after t_override seconds.
|
it so that it expires after t_override seconds.
|
||||||
*/
|
*/
|
||||||
void pim_upstream_rpf_genid_changed(struct pim_instance *pim,
|
void pim_upstream_rpf_genid_changed(struct pim_instance *pim,
|
||||||
struct in_addr neigh_addr)
|
pim_addr neigh_addr)
|
||||||
{
|
{
|
||||||
struct pim_upstream *up;
|
struct pim_upstream *up;
|
||||||
|
|
||||||
@ -1271,24 +1271,24 @@ void pim_upstream_rpf_genid_changed(struct pim_instance *pim,
|
|||||||
* Scan all (S,G) upstreams searching for RPF'(S,G)=neigh_addr
|
* Scan all (S,G) upstreams searching for RPF'(S,G)=neigh_addr
|
||||||
*/
|
*/
|
||||||
frr_each (rb_pim_upstream, &pim->upstream_head, up) {
|
frr_each (rb_pim_upstream, &pim->upstream_head, up) {
|
||||||
if (PIM_DEBUG_PIM_TRACE) {
|
pim_addr rpf_addr;
|
||||||
char rpf_addr_str[PREFIX_STRLEN];
|
|
||||||
pim_addr_dump("<rpf?>", &up->rpf.rpf_addr, rpf_addr_str,
|
rpf_addr = pim_addr_from_prefix(&up->rpf.rpf_addr);
|
||||||
sizeof(rpf_addr_str));
|
|
||||||
|
if (PIM_DEBUG_PIM_TRACE)
|
||||||
zlog_debug(
|
zlog_debug(
|
||||||
"%s: matching neigh=%pI4 against upstream (S,G)=%s[%s] joined=%d rpf_addr=%s",
|
"%s: matching neigh=%pPA against upstream (S,G)=%s[%s] joined=%d rpf_addr=%pPA",
|
||||||
__func__, &neigh_addr, up->sg_str,
|
__func__, &neigh_addr, up->sg_str,
|
||||||
pim->vrf->name,
|
pim->vrf->name,
|
||||||
up->join_state == PIM_UPSTREAM_JOINED,
|
up->join_state == PIM_UPSTREAM_JOINED,
|
||||||
rpf_addr_str);
|
&rpf_addr);
|
||||||
}
|
|
||||||
|
|
||||||
/* consider only (S,G) upstream in Joined state */
|
/* consider only (S,G) upstream in Joined state */
|
||||||
if (up->join_state != PIM_UPSTREAM_JOINED)
|
if (up->join_state != PIM_UPSTREAM_JOINED)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* match RPF'(S,G)=neigh_addr */
|
/* match RPF'(S,G)=neigh_addr */
|
||||||
if (up->rpf.rpf_addr.u.prefix4.s_addr != neigh_addr.s_addr)
|
if (pim_addr_cmp(rpf_addr, neigh_addr))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
pim_upstream_join_timer_decrease_to_t_override(
|
pim_upstream_join_timer_decrease_to_t_override(
|
||||||
|
@ -326,7 +326,7 @@ void pim_upstream_join_timer_decrease_to_t_override(const char *debug_label,
|
|||||||
void pim_upstream_join_timer_restart(struct pim_upstream *up,
|
void pim_upstream_join_timer_restart(struct pim_upstream *up,
|
||||||
struct pim_rpf *old);
|
struct pim_rpf *old);
|
||||||
void pim_upstream_rpf_genid_changed(struct pim_instance *pim,
|
void pim_upstream_rpf_genid_changed(struct pim_instance *pim,
|
||||||
struct in_addr neigh_addr);
|
pim_addr neigh_addr);
|
||||||
void pim_upstream_rpf_interface_changed(struct pim_upstream *up,
|
void pim_upstream_rpf_interface_changed(struct pim_upstream *up,
|
||||||
struct interface *old_rpf_ifp);
|
struct interface *old_rpf_ifp);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user