summaryrefslogtreecommitdiff
path: root/pimd/pim_sock.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetwroks.com>2016-09-05 08:31:46 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2016-12-21 20:26:08 -0500
commitfb5d6e2f4176c36ef0c17676a93001968aa0a57a (patch)
tree1bde700954c42eafb35f6c20d897f36aba6a27ac /pimd/pim_sock.c
parentfa8da98c263029568e9842a457be542062801b07 (diff)
pimd: Fix SA warning
Restructure code to remove SA warning from clang build. For some reason, the Clang SA system thought that si.sin_port and si.sin_addr where not being set to anything. Fix this problem. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_sock.c')
-rw-r--r--pimd/pim_sock.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c
index 4312fe73b2..8ba514a219 100644
--- a/pimd/pim_sock.c
+++ b/pimd/pim_sock.c
@@ -334,17 +334,14 @@ int pim_socket_recvfromto(int fd, uint8_t *buf, size_t len,
if (to) {
struct sockaddr_in si;
socklen_t si_len = sizeof(si);
-
- ((struct sockaddr_in *) to)->sin_family = AF_INET;
- if (pim_socket_getsockname(fd, (struct sockaddr *) &si, &si_len) != PIM_SOCK_ERR_NONE) {
- ((struct sockaddr_in *) to)->sin_port = ntohs(0);
- ((struct sockaddr_in *) to)->sin_addr.s_addr = ntohl(0);
- }
- else {
- ((struct sockaddr_in *) to)->sin_port = si.sin_port;
- ((struct sockaddr_in *) to)->sin_addr = si.sin_addr;
- }
+ memset (&si, 0, sizeof (si));
+ to->sin_family = AF_INET;
+
+ pim_socket_getsockname(fd, (struct sockaddr *) &si, &si_len);
+
+ to->sin_port = si.sin_port;
+ to->sin_addr = si.sin_addr;
if (tolen)
*tolen = sizeof(si);