]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
bsd: set sa_len
authorRoy Marples <roy@marples.name>
Thu, 7 Dec 2017 21:12:43 +0000 (21:12 +0000)
committerRoy Marples <roy@marples.name>
Thu, 7 Dec 2017 21:12:43 +0000 (21:12 +0000)
src/dhcp.c
src/dhcp6.c
src/ipv6nd.c

index 44d99fe241a50b326867a0ced38dd1ed63c66956..283b403409db9cd580f5fdd0c51f468c30004aa8 100644 (file)
@@ -1689,10 +1689,7 @@ dhcp_sendudp(struct interface *ifp, struct in_addr *to, void *data, size_t len)
 {
        int s;
        struct msghdr msg;
-       union {
-               struct sockaddr sa;
-               struct sockaddr_in sin;
-       } sto;
+       struct sockaddr_in sin;
        struct iovec iov[1];
        ssize_t r;
 #ifdef IP_PKTINFO
@@ -1704,14 +1701,17 @@ dhcp_sendudp(struct interface *ifp, struct in_addr *to, void *data, size_t len)
        iov[0].iov_base = data;
        iov[0].iov_len = len;
 
-       memset(&sto, 0, sizeof(sto));
-       sto.sin.sin_family = AF_INET;
-       sto.sin.sin_addr = *to;
-       sto.sin.sin_port = htons(BOOTPS);
+       memset(&sin, 0, sizeof(sin));
+       sin.sin_family = AF_INET;
+       sin.sin_addr = *to;
+       sin.sin_port = htons(BOOTPS);
+#ifdef HAVE_SA_LEN
+       sin.sin_len = sizeof(sin);
+#endif
 
        memset(&msg, 0, sizeof(msg));
-       msg.msg_name = (void *)&sto.sa;
-       msg.msg_namelen = sizeof(sto);
+       msg.msg_name = (void *)&sin;
+       msg.msg_namelen = sizeof(sin);
        msg.msg_iov = iov;
        msg.msg_iovlen = 1;
 
index fb73d3b903cc6ab950a6eda442cdafabb659c903..a2252e38b3e43eeed52bb8526e350c4f0d639840 100644 (file)
@@ -1099,7 +1099,7 @@ dhcp6_sendmessage(struct interface *ifp, void (*callback)(void *))
        memset(&dst, 0, sizeof(dst));
        dst.sin6_family = AF_INET6;
        dst.sin6_port = htons(DHCP6_SERVER_PORT);
-#ifdef SIN6_LEN
+#ifdef HAVE_SA_LEN
        dst.sin6_len = sizeof(dst);
 #endif
 
index a4bae15bbb50633acf9ac4435f4478d13dae184c..a7a2902a3290812dda09d9413781d28e7817baed 100644 (file)
@@ -286,7 +286,7 @@ ipv6nd_sendrsprobe(void *arg)
 
        memset(&dst, 0, sizeof(dst));
        dst.sin6_family = AF_INET6;
-#ifdef SIN6_LEN
+#ifdef HAVE_SA_LEN
        dst.sin6_len = sizeof(dst);
 #endif
        dst.sin6_scope_id = ifp->index;