diff options
| author | Rafael Zalamena <rzalamena@opensourcerouting.org> | 2021-05-06 11:41:08 -0300 |
|---|---|---|
| committer | Rafael Zalamena <rzalamena@opensourcerouting.org> | 2021-06-25 15:06:20 -0300 |
| commit | 0ce04a08a3b6fc39d638e47203c78de74315b6fb (patch) | |
| tree | 228ca3e6e3e332ea1ee7b5daec7712f9a5b40b0b /pimd/pim_msdp_packet.c | |
| parent | 3bed07f60f0e3b061b4913879989e1562a9daaf5 (diff) | |
pimd: allow MSDP group name 'default'
Don't assign a default group name for non meshed group peers, instead
use a flag.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Diffstat (limited to 'pimd/pim_msdp_packet.c')
| -rw-r--r-- | pimd/pim_msdp_packet.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/pimd/pim_msdp_packet.c b/pimd/pim_msdp_packet.c index 48f1c864af..6d49708827 100644 --- a/pimd/pim_msdp_packet.c +++ b/pimd/pim_msdp_packet.c @@ -522,12 +522,15 @@ static void pim_msdp_pkt_sa_rx_one(struct pim_msdp_peer *mp, struct in_addr rp) * If the message group is not set, i.e. "default", then we assume that * the message must be forwarded.*/ for (ALL_LIST_ELEMENTS_RO(mp->pim->msdp.peer_list, peer_node, peer)) { - if (!pim_msdp_peer_rpf_check(peer, rp) - && (strcmp(mp->mesh_group_name, peer->mesh_group_name) - || !strcmp(mp->mesh_group_name, - MSDP_SOLO_PEER_GROUP_NAME))) { - pim_msdp_pkt_sa_tx_one_to_one_peer(peer, rp, sg); - } + /* Not a RPF peer, so skip it. */ + if (pim_msdp_peer_rpf_check(peer, rp)) + continue; + /* Don't forward inside the meshed group. */ + if ((mp->flags & PIM_MSDP_PEERF_IN_GROUP) + && strcmp(mp->mesh_group_name, peer->mesh_group_name) == 0) + continue; + + pim_msdp_pkt_sa_tx_one_to_one_peer(peer, rp, sg); } } |
