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.c99
1 files changed, 36 insertions, 63 deletions
diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c
index 3c38ebd76b..7d05403c36 100644
--- a/pimd/pim_assert.c
+++ b/pimd/pim_assert.c
@@ -61,18 +61,11 @@ void pim_ifassert_winner_set(struct pim_ifchannel *ch,
ch->interface->name);
}
- if (winner_changed) {
- char was_str[INET_ADDRSTRLEN];
- char winner_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<was?>", ch->ifassert_winner, was_str,
- sizeof(was_str));
- pim_inet4_dump("<winner?>", winner, winner_str,
- sizeof(winner_str));
+ if (winner_changed)
zlog_debug(
- "%s: (S,G)=%s assert winner changed from %s to %s on interface %s",
- __func__, ch->sg_str, was_str, winner_str,
- ch->interface->name);
- }
+ "%s: (S,G)=%s assert winner changed from %pPAs to %pPAs on interface %s",
+ __func__, ch->sg_str, &ch->ifassert_winner,
+ &winner, ch->interface->name);
} /* PIM_DEBUG_PIM_EVENTS */
ch->ifassert_state = new_state;
@@ -87,14 +80,10 @@ void pim_ifassert_winner_set(struct pim_ifchannel *ch,
}
}
-static void on_trace(const char *label, struct interface *ifp,
- struct in_addr src)
+static void on_trace(const char *label, struct interface *ifp, pim_addr src)
{
- if (PIM_DEBUG_PIM_TRACE) {
- char src_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<src?>", src, src_str, sizeof(src_str));
- zlog_debug("%s: from %s on %s", label, src_str, ifp->name);
- }
+ if (PIM_DEBUG_PIM_TRACE)
+ zlog_debug("%s: from %pPAs on %s", label, &src, ifp->name);
}
static int preferred_assert(const struct pim_ifchannel *ch,
@@ -136,8 +125,8 @@ static void if_could_assert_do_a1(const char *caller, struct pim_ifchannel *ch)
}
}
-static int dispatch_assert(struct interface *ifp, struct in_addr source_addr,
- struct in_addr group_addr,
+static int dispatch_assert(struct interface *ifp, pim_addr source_addr,
+ pim_addr group_addr,
struct pim_assert_metric recv_metric)
{
struct pim_ifchannel *ch;
@@ -213,10 +202,11 @@ 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)
+ pim_addr src_addr, uint8_t *buf, int buf_size)
{
pim_sgaddr sg;
- struct prefix msg_source_addr;
+ pim_addr msg_source_addr;
+ bool wrong_af = false;
struct pim_assert_metric msg_metric;
int offset;
uint8_t *curr;
@@ -234,10 +224,9 @@ int pim_assert_recv(struct interface *ifp, struct pim_neighbor *neigh,
memset(&sg, 0, sizeof(sg));
offset = pim_parse_addr_group(&sg, curr, curr_size);
if (offset < 1) {
- char src_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<src?>", src_addr, src_str, sizeof(src_str));
- zlog_warn("%s: pim_parse_addr_group() failure: from %s on %s",
- __func__, src_str, ifp->name);
+ zlog_warn(
+ "%s: pim_parse_addr_group() failure: from %pPAs on %s",
+ __func__, &src_addr, ifp->name);
return -1;
}
curr += offset;
@@ -246,23 +235,21 @@ int pim_assert_recv(struct interface *ifp, struct pim_neighbor *neigh,
/*
Parse assert source addr
*/
- offset = pim_parse_addr_ucast(&msg_source_addr, curr, curr_size);
- if (offset < 1) {
- char src_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<src?>", src_addr, src_str, sizeof(src_str));
- zlog_warn("%s: pim_parse_addr_ucast() failure: from %s on %s",
- __func__, src_str, ifp->name);
+ offset = pim_parse_addr_ucast(&msg_source_addr, curr, curr_size,
+ &wrong_af);
+ if (offset < 1 || wrong_af) {
+ zlog_warn(
+ "%s: pim_parse_addr_ucast() failure: from %pPAs on %s",
+ __func__, &src_addr, ifp->name);
return -2;
}
curr += offset;
curr_size -= offset;
if (curr_size < 8) {
- char src_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<src?>", src_addr, src_str, sizeof(src_str));
zlog_warn(
- "%s: preference/metric size is less than 8 bytes: size=%d from %s on interface %s",
- __func__, curr_size, src_str, ifp->name);
+ "%s: preference/metric size is less than 8 bytes: size=%d from %pPAs on interface %s",
+ __func__, curr_size, &src_addr, ifp->name);
return -3;
}
@@ -284,19 +271,13 @@ int pim_assert_recv(struct interface *ifp, struct pim_neighbor *neigh,
msg_metric.route_metric = pim_read_uint32_host(curr);
- if (PIM_DEBUG_PIM_TRACE) {
- char neigh_str[INET_ADDRSTRLEN];
- char source_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<neigh?>", src_addr, neigh_str,
- sizeof(neigh_str));
- pim_inet4_dump("<src?>", msg_source_addr.u.prefix4, source_str,
- sizeof(source_str));
+ if (PIM_DEBUG_PIM_TRACE)
zlog_debug(
- "%s: from %s on %s: (S,G)=(%s,%pPAs) pref=%u metric=%u rpt_bit=%u",
- __func__, neigh_str, ifp->name, source_str, &sg.grp,
- msg_metric.metric_preference, msg_metric.route_metric,
+ "%s: from %pPAs on %s: (S,G)=(%pPAs,%pPAs) pref=%u metric=%u rpt_bit=%u",
+ __func__, &src_addr, ifp->name, &msg_source_addr,
+ &sg.grp, msg_metric.metric_preference,
+ msg_metric.route_metric,
PIM_FORCE_BOOLEAN(msg_metric.rpt_bit_flag));
- }
msg_metric.ip_address = src_addr;
@@ -304,8 +285,7 @@ int pim_assert_recv(struct interface *ifp, struct pim_neighbor *neigh,
assert(pim_ifp);
++pim_ifp->pim_ifstat_assert_recv;
- return dispatch_assert(ifp, msg_source_addr.u.prefix4, sg.grp,
- msg_metric);
+ return dispatch_assert(ifp, msg_source_addr, sg.grp, msg_metric);
}
/*
@@ -354,7 +334,7 @@ int pim_assert_metric_match(const struct pim_assert_metric *m1,
}
int pim_assert_build_msg(uint8_t *pim_msg, int buf_size, struct interface *ifp,
- struct in_addr group_addr, struct in_addr source_addr,
+ pim_addr group_addr, pim_addr source_addr,
uint32_t metric_preference, uint32_t route_metric,
uint32_t rpt_bit_flag)
{
@@ -368,28 +348,21 @@ int pim_assert_build_msg(uint8_t *pim_msg, int buf_size, struct interface *ifp,
/* Encode group */
remain = buf_pastend - pim_msg_curr;
- pim_msg_curr = pim_msg_addr_encode_ipv4_group(pim_msg_curr, group_addr);
+ pim_msg_curr = pim_msg_addr_encode_group(pim_msg_curr, group_addr);
if (!pim_msg_curr) {
- char group_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<grp?>", group_addr, group_str,
- sizeof(group_str));
zlog_warn(
- "%s: failure encoding group address %s: space left=%d",
- __func__, group_str, remain);
+ "%s: failure encoding group address %pPA: space left=%d",
+ __func__, &group_addr, remain);
return -1;
}
/* Encode source */
remain = buf_pastend - pim_msg_curr;
- pim_msg_curr =
- pim_msg_addr_encode_ipv4_ucast(pim_msg_curr, source_addr);
+ pim_msg_curr = pim_msg_addr_encode_ucast(pim_msg_curr, source_addr);
if (!pim_msg_curr) {
- char source_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<src?>", source_addr, source_str,
- sizeof(source_str));
zlog_warn(
- "%s: failure encoding source address %s: space left=%d",
- __func__, source_str, remain);
+ "%s: failure encoding source address %pPA: space left=%d",
+ __func__, &source_addr, remain);
return -2;
}