summaryrefslogtreecommitdiff
path: root/pimd/pim_upstream.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2022-01-05 15:56:18 +0100
committerDavid Lamparter <equinox@opensourcerouting.org>2022-01-17 14:08:58 +0100
commit62f59b58ba4c0fa2a5763bccaade47d6b070438b (patch)
tree7174d035faddc37f9c8b78b25cd9e6b05892a822 /pimd/pim_upstream.c
parent408ed95ed22cf53d7af3e62ed2b2382eb442bef7 (diff)
pimd: deploy pim_sgaddr_* helpers
Use _cmp/_hash/_match helpers for operations on pim_sgaddr to prepare IPv6 support. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'pimd/pim_upstream.c')
-rw-r--r--pimd/pim_upstream.c22
1 files changed, 3 insertions, 19 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index e3d0db1bf2..4007142374 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -824,19 +824,7 @@ void pim_upstream_switch(struct pim_instance *pim, struct pim_upstream *up,
int pim_upstream_compare(const struct pim_upstream *up1,
const struct pim_upstream *up2)
{
- if (ntohl(up1->sg.grp.s_addr) < ntohl(up2->sg.grp.s_addr))
- return -1;
-
- if (ntohl(up1->sg.grp.s_addr) > ntohl(up2->sg.grp.s_addr))
- return 1;
-
- if (ntohl(up1->sg.src.s_addr) < ntohl(up2->sg.src.s_addr))
- return -1;
-
- if (ntohl(up1->sg.src.s_addr) > ntohl(up2->sg.src.s_addr))
- return 1;
-
- return 0;
+ return pim_sgaddr_cmp(up1->sg, up2->sg);
}
void pim_upstream_fill_static_iif(struct pim_upstream *up,
@@ -1958,7 +1946,7 @@ unsigned int pim_upstream_hash_key(const void *arg)
{
const struct pim_upstream *up = arg;
- return jhash_2words(up->sg.src.s_addr, up->sg.grp.s_addr, 0);
+ return pim_sgaddr_hash(up->sg, 0);
}
void pim_upstream_terminate(struct pim_instance *pim)
@@ -1981,11 +1969,7 @@ bool pim_upstream_equal(const void *arg1, const void *arg2)
const struct pim_upstream *up1 = (const struct pim_upstream *)arg1;
const struct pim_upstream *up2 = (const struct pim_upstream *)arg2;
- if ((up1->sg.grp.s_addr == up2->sg.grp.s_addr)
- && (up1->sg.src.s_addr == up2->sg.src.s_addr))
- return true;
-
- return false;
+ return !pim_sgaddr_cmp(up1->sg, up2->sg);
}
/* rfc4601:section-4.2:"Data Packet Forwarding Rules" defines