X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=networking%2Fudhcp%2Fpacket.c;h=25c55faab1c9d5f7a174bdac2fbd31f5a759ecef;hb=83e5d6f77237b64853c194b0ce592e77ef677c4d;hp=e79542d082214418b0708e2b344463b72c850a66;hpb=5a3395bc01cd4b11309595a6ecdaf32f8279f378;p=oweals%2Fbusybox.git diff --git a/networking/udhcp/packet.c b/networking/udhcp/packet.c index e79542d08..25c55faab 100644 --- a/networking/udhcp/packet.c +++ b/networking/udhcp/packet.c @@ -1,7 +1,7 @@ /* vi: set sw=4 ts=4: */ #include -#if (__GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1) || defined _NEWLIB_VERSION +#if (defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1) || defined _NEWLIB_VERSION #include #include #else @@ -109,6 +109,7 @@ uint16_t udhcp_checksum(void *addr, int count) /* Construct a ip/udp header for a packet, and specify the source and dest hardware address */ +void BUG_sizeof_struct_udp_dhcp_packet_must_be_576(void); int udhcp_raw_packet(struct dhcpMessage *payload, uint32_t source_ip, int source_port, uint32_t dest_ip, int dest_port, uint8_t *dest_arp, int ifindex) @@ -154,6 +155,9 @@ int udhcp_raw_packet(struct dhcpMessage *payload, packet.ip.ttl = IPDEFTTL; packet.ip.check = udhcp_checksum(&(packet.ip), sizeof(packet.ip)); + if (sizeof(struct udp_dhcp_packet) != 576) + BUG_sizeof_struct_udp_dhcp_packet_must_be_576(); + result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0, (struct sockaddr *) &dest, sizeof(dest)); if (result <= 0) { @@ -169,7 +173,6 @@ int udhcp_kernel_packet(struct dhcpMessage *payload, uint32_t source_ip, int source_port, uint32_t dest_ip, int dest_port) { - int n = 1; int fd, result; struct sockaddr_in client; @@ -177,7 +180,7 @@ int udhcp_kernel_packet(struct dhcpMessage *payload, if (fd < 0) return -1; - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *) &n, sizeof(n)) == -1) { + if (setsockopt_reuseaddr(fd) == -1) { close(fd); return -1; }