summaryrefslogtreecommitdiff
path: root/pimd/pim_assert.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_assert.c')
-rw-r--r--pimd/pim_assert.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c
index 0988938701..79b46994aa 100644
--- a/pimd/pim_assert.c
+++ b/pimd/pim_assert.c
@@ -43,12 +43,11 @@ static void assert_action_a6(struct pim_ifchannel *ch,
struct pim_assert_metric winner_metric);
void pim_ifassert_winner_set(struct pim_ifchannel *ch,
- enum pim_ifassert_state new_state,
- struct in_addr winner,
+ enum pim_ifassert_state new_state, pim_addr winner,
struct pim_assert_metric winner_metric)
{
struct pim_interface *pim_ifp = ch->interface->info;
- int winner_changed = (ch->ifassert_winner.s_addr != winner.s_addr);
+ int winner_changed = !!pim_addr_cmp(ch->ifassert_winner, winner);
int metric_changed = !pim_assert_metric_match(
&ch->ifassert_winner_metric, &winner_metric);
@@ -142,9 +141,9 @@ static int dispatch_assert(struct interface *ifp, struct in_addr source_addr,
struct pim_assert_metric recv_metric)
{
struct pim_ifchannel *ch;
- struct prefix_sg sg;
+ pim_sgaddr sg;
- memset(&sg, 0, sizeof(struct prefix_sg));
+ memset(&sg, 0, sizeof(sg));
sg.src = source_addr;
sg.grp = group_addr;
ch = pim_ifchannel_add(ifp, &sg, 0, 0);
@@ -179,8 +178,8 @@ static int dispatch_assert(struct interface *ifp, struct in_addr source_addr,
}
break;
case PIM_IFASSERT_I_AM_LOSER:
- if (recv_metric.ip_address.s_addr
- == ch->ifassert_winner.s_addr) {
+ if (!pim_addr_cmp(recv_metric.ip_address,
+ ch->ifassert_winner)) {
/* Assert from current winner */
if (cancel_assert(&recv_metric)) {
@@ -216,7 +215,7 @@ static int dispatch_assert(struct interface *ifp, struct in_addr source_addr,
int pim_assert_recv(struct interface *ifp, struct pim_neighbor *neigh,
struct in_addr src_addr, uint8_t *buf, int buf_size)
{
- struct prefix_sg sg;
+ pim_sgaddr sg;
struct prefix msg_source_addr;
struct pim_assert_metric msg_metric;
int offset;
@@ -232,7 +231,7 @@ int pim_assert_recv(struct interface *ifp, struct pim_neighbor *neigh,
/*
Parse assert group addr
*/
- memset(&sg, 0, sizeof(struct prefix_sg));
+ memset(&sg, 0, sizeof(sg));
offset = pim_parse_addr_group(&sg, curr, curr_size);
if (offset < 1) {
char src_str[INET_ADDRSTRLEN];
@@ -340,7 +339,7 @@ int pim_assert_metric_better(const struct pim_assert_metric *m1,
if (m1->route_metric > m2->route_metric)
return 0;
- return ntohl(m1->ip_address.s_addr) > ntohl(m2->ip_address.s_addr);
+ return pim_addr_cmp(m1->ip_address, m2->ip_address) > 0;
}
int pim_assert_metric_match(const struct pim_assert_metric *m1,
@@ -353,7 +352,7 @@ int pim_assert_metric_match(const struct pim_assert_metric *m1,
if (m1->route_metric != m2->route_metric)
return 0;
- return m1->ip_address.s_addr == m2->ip_address.s_addr;
+ return !pim_addr_cmp(m1->ip_address, m2->ip_address);
}
int pim_assert_build_msg(uint8_t *pim_msg, int buf_size, struct interface *ifp,