summaryrefslogtreecommitdiff
path: root/pimd/pim_rp.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2022-01-14 19:12:32 +0100
committerDavid Lamparter <equinox@opensourcerouting.org>2022-02-14 06:45:03 +0100
commit01adb431d38c4481795cae0e36b59014f389e0e3 (patch)
treed14d256443fea7c12ae3fedf646142defbf39e2e /pimd/pim_rp.c
parent11928ecf19e8b750b731b526863668197f38f9d6 (diff)
pim6d: IPv6-adjust pim_upstream addr
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'pimd/pim_rp.c')
-rw-r--r--pimd/pim_rp.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c
index 0a52092b1e..fb448632db 100644
--- a/pimd/pim_rp.c
+++ b/pimd/pim_rp.c
@@ -534,7 +534,7 @@ int pim_rp_new(struct pim_instance *pim, struct in_addr rp_addr,
/* Find (*, G) upstream whose RP is not
* configured yet
*/
- if ((up->upstream_addr.s_addr == INADDR_ANY) &&
+ if (pim_addr_is_any(up->upstream_addr) &&
pim_addr_is_any(up->sg.src)) {
struct prefix grp;
struct rp_info *trp_info;
@@ -772,8 +772,10 @@ int pim_rp_del(struct pim_instance *pim, struct in_addr rp_addr,
/* Find the upstream (*, G) whose upstream address is
* same as the deleted RP
*/
- if ((up->upstream_addr.s_addr ==
- rp_info->rp.rpf_addr.u.prefix4.s_addr) &&
+ pim_addr rpf_addr;
+
+ rpf_addr = pim_addr_from_prefix(&rp_info->rp.rpf_addr);
+ if (!pim_addr_cmp(up->upstream_addr, rpf_addr) &&
pim_addr_is_any(up->sg.src)) {
struct prefix grp;
@@ -781,7 +783,7 @@ int pim_rp_del(struct pim_instance *pim, struct in_addr rp_addr,
trp_info = pim_rp_find_match_group(pim, &grp);
if (trp_info == rp_all) {
pim_upstream_rpf_clear(pim, up);
- up->upstream_addr.s_addr = INADDR_ANY;
+ up->upstream_addr = PIMADDR_ANY;
}
}
}
@@ -819,8 +821,10 @@ int pim_rp_del(struct pim_instance *pim, struct in_addr rp_addr,
/* Find the upstream (*, G) whose upstream address is same as
* the deleted RP
*/
- if ((up->upstream_addr.s_addr ==
- rp_info->rp.rpf_addr.u.prefix4.s_addr) &&
+ pim_addr rpf_addr;
+
+ rpf_addr = pim_addr_from_prefix(&rp_info->rp.rpf_addr);
+ if (!pim_addr_cmp(up->upstream_addr, rpf_addr) &&
pim_addr_is_any(up->sg.src)) {
struct prefix grp;