Mercurial > hg > dhcpcd
changeset 4192:72557c2f086e draft
bsd: set sa_len
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Thu, 07 Dec 2017 21:12:43 +0000 |
| parents | 30f5f070a4aa |
| children | a1772bc670f0 |
| files | src/dhcp.c src/dhcp6.c src/ipv6nd.c |
| diffstat | 3 files changed, 12 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dhcp.c Thu Dec 07 20:44:13 2017 +0000 +++ b/src/dhcp.c Thu Dec 07 21:12:43 2017 +0000 @@ -1689,10 +1689,7 @@ { 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 @@ 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;
