summaryrefslogtreecommitdiff
path: root/pimd/pim_ssmpingd.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_ssmpingd.c')
-rw-r--r--pimd/pim_ssmpingd.c50
1 files changed, 16 insertions, 34 deletions
diff --git a/pimd/pim_ssmpingd.c b/pimd/pim_ssmpingd.c
index 596b06cb38..e43b46604c 100644
--- a/pimd/pim_ssmpingd.c
+++ b/pimd/pim_ssmpingd.c
@@ -244,8 +244,8 @@ static void ssmpingd_sendto(struct ssmpingd_sock *ss, const uint8_t *buf,
static int ssmpingd_read_msg(struct ssmpingd_sock *ss)
{
struct interface *ifp;
- struct sockaddr_in from;
- struct sockaddr_in to;
+ struct sockaddr_storage from;
+ struct sockaddr_storage to;
socklen_t fromlen = sizeof(from);
socklen_t tolen = sizeof(to);
ifindex_t ifindex = -1;
@@ -256,13 +256,11 @@ static int ssmpingd_read_msg(struct ssmpingd_sock *ss)
len = pim_socket_recvfromto(ss->sock_fd, buf, sizeof(buf), &from,
&fromlen, &to, &tolen, &ifindex);
+
if (len < 0) {
- char source_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<src?>", ss->source_addr, source_str,
- sizeof(source_str));
zlog_warn(
- "%s: failure receiving ssmping for source %s on fd=%d: errno=%d: %s",
- __func__, source_str, ss->sock_fd, errno,
+ "%s: failure receiving ssmping for source %pI4 on fd=%d: errno=%d: %s",
+ __func__, &ss->source_addr, ss->sock_fd, errno,
safe_strerror(errno));
return -1;
}
@@ -270,47 +268,31 @@ static int ssmpingd_read_msg(struct ssmpingd_sock *ss)
ifp = if_lookup_by_index(ifindex, ss->pim->vrf->vrf_id);
if (buf[0] != PIM_SSMPINGD_REQUEST) {
- char source_str[INET_ADDRSTRLEN];
- char from_str[INET_ADDRSTRLEN];
- char to_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<src?>", ss->source_addr, source_str,
- sizeof(source_str));
- pim_inet4_dump("<from?>", from.sin_addr, from_str,
- sizeof(from_str));
- pim_inet4_dump("<to?>", to.sin_addr, to_str, sizeof(to_str));
zlog_warn(
- "%s: bad ssmping type=%d from %s,%d to %s,%d on interface %s ifindex=%d fd=%d src=%s",
- __func__, buf[0], from_str, ntohs(from.sin_port),
- to_str, ntohs(to.sin_port),
+ "%s: bad ssmping type=%d from %pSUp to %pSUp on interface %s ifindex=%d fd=%d src=%pI4",
+ __func__, buf[0], &from, &to,
ifp ? ifp->name : "<iface?>", ifindex, ss->sock_fd,
- source_str);
+ &ss->source_addr);
return 0;
}
if (PIM_DEBUG_SSMPINGD) {
- char source_str[INET_ADDRSTRLEN];
- char from_str[INET_ADDRSTRLEN];
- char to_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<src?>", ss->source_addr, source_str,
- sizeof(source_str));
- pim_inet4_dump("<from?>", from.sin_addr, from_str,
- sizeof(from_str));
- pim_inet4_dump("<to?>", to.sin_addr, to_str, sizeof(to_str));
zlog_debug(
- "%s: recv ssmping from %s,%d to %s,%d on interface %s ifindex=%d fd=%d src=%s",
- __func__, from_str, ntohs(from.sin_port), to_str,
- ntohs(to.sin_port), ifp ? ifp->name : "<iface?>",
- ifindex, ss->sock_fd, source_str);
+ "%s: recv ssmping from %pSUp, to %pSUp, on interface %s ifindex=%d fd=%d src=%pI4",
+ __func__, &from, &to, ifp ? ifp->name : "<iface?>",
+ ifindex, ss->sock_fd, &ss->source_addr);
}
buf[0] = PIM_SSMPINGD_REPLY;
+ struct sockaddr_in *from_addr = (struct sockaddr_in *)&from;
+
/* unicast reply */
- ssmpingd_sendto(ss, buf, len, from);
+ ssmpingd_sendto(ss, buf, len, *from_addr);
/* multicast reply */
- from.sin_addr = ss->pim->ssmpingd_group_addr;
- ssmpingd_sendto(ss, buf, len, from);
+ from_addr->sin_addr = ss->pim->ssmpingd_group_addr;
+ ssmpingd_sendto(ss, buf, len, *from_addr);
return 0;
}