Skip to content

Commit

Permalink
Merge pull request #14517 from adrianomarto/pim-msdp-sa-rp
Browse files Browse the repository at this point in the history
pimd: Indicating the configured PIM Rendezvous Point (RP) in the MSDP SA message
  • Loading branch information
donaldsharp authored Oct 5, 2023
2 parents 0fb9f91 + 95e31a6 commit 580bc71
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 3 deletions.
10 changes: 10 additions & 0 deletions pimd/pim_msdp.c
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,8 @@ void pim_msdp_sa_ref(struct pim_instance *pim, struct pim_msdp_peer *mp,
pim_sgaddr *sg, struct in_addr rp)
{
struct pim_msdp_sa *sa;
struct rp_info *rp_info;
struct prefix grp;

sa = pim_msdp_sa_add(pim, sg, rp);
if (!sa) {
Expand Down Expand Up @@ -406,6 +408,14 @@ void pim_msdp_sa_ref(struct pim_instance *pim, struct pim_msdp_peer *mp,
sa->sg_str);
}
/* send an immediate SA update to peers */
pim_addr_to_prefix(&grp, sa->sg.grp);
rp_info = pim_rp_find_match_group(pim, &grp);
if (rp_info) {
sa->rp = rp_info->rp.rpf_addr;
} else
{
sa->rp = pim->msdp.originator_id;
}
sa->rp = pim->msdp.originator_id;
pim_msdp_pkt_sa_tx_one(sa);
}
Expand Down
18 changes: 15 additions & 3 deletions pimd/pim_msdp_packet.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@

#include "pimd.h"
#include "pim_instance.h"
#include "pim_rp.h"
#include "pim_str.h"
#include "pim_util.h"
#include "pim_errors.h"

#include "pim_msdp.h"
Expand Down Expand Up @@ -387,6 +389,9 @@ static void pim_msdp_pkt_sa_gen(struct pim_instance *pim,
{
struct listnode *sanode;
struct pim_msdp_sa *sa;
struct rp_info *rp_info;
struct prefix group_all;
struct in_addr rp;
int sa_count;
int local_cnt = pim->msdp.local_cnt;

Expand All @@ -395,8 +400,15 @@ static void pim_msdp_pkt_sa_gen(struct pim_instance *pim,
zlog_debug(" sa gen %d", local_cnt);
}

local_cnt = pim_msdp_pkt_sa_fill_hdr(pim, local_cnt,
pim->msdp.originator_id);
rp = pim->msdp.originator_id;
if (pim_get_all_mcast_group(&group_all)) {
rp_info = pim_rp_find_match_group(pim, &group_all);
if (rp_info) {
rp = rp_info->rp.rpf_addr;
}
}

local_cnt = pim_msdp_pkt_sa_fill_hdr(pim, local_cnt, rp);

for (ALL_LIST_ELEMENTS_RO(pim->msdp.sa_list, sanode, sa)) {
if (!(sa->flags & PIM_MSDP_SAF_LOCAL)) {
Expand All @@ -418,7 +430,7 @@ static void pim_msdp_pkt_sa_gen(struct pim_instance *pim,
local_cnt);
}
local_cnt = pim_msdp_pkt_sa_fill_hdr(
pim, local_cnt, pim->msdp.originator_id);
pim, local_cnt, rp);
}
}

Expand Down

0 comments on commit 580bc71

Please sign in to comment.