summaryrefslogtreecommitdiff
path: root/networking/udhcp
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2006-11-20 01:13:09 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2006-11-20 01:13:09 +0000
commitc9cdeaa3fef3f93eb259957d36c760ec8902e0c1 (patch)
tree18eb5bb7b7fa9a3ceb9c607eefb571ddb0c5e95b /networking/udhcp
parent4a5cf16a368bf513a2c2e3b27821a37d3df3cf89 (diff)
downloadbusybox-w32-c9cdeaa3fef3f93eb259957d36c760ec8902e0c1.tar.gz
busybox-w32-c9cdeaa3fef3f93eb259957d36c760ec8902e0c1.tar.bz2
busybox-w32-c9cdeaa3fef3f93eb259957d36c760ec8902e0c1.zip
add compile-time check for correct DHCP packet size
Diffstat (limited to 'networking/udhcp')
-rw-r--r--networking/udhcp/packet.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/networking/udhcp/packet.c b/networking/udhcp/packet.c
index e79542d08..85910447b 100644
--- a/networking/udhcp/packet.c
+++ b/networking/udhcp/packet.c
@@ -109,6 +109,7 @@ uint16_t udhcp_checksum(void *addr, int count)
109 109
110 110
111/* Construct a ip/udp header for a packet, and specify the source and dest hardware address */ 111/* Construct a ip/udp header for a packet, and specify the source and dest hardware address */
112void BUG_sizeof_struct_udp_dhcp_packet_must_be_576(void);
112int udhcp_raw_packet(struct dhcpMessage *payload, 113int udhcp_raw_packet(struct dhcpMessage *payload,
113 uint32_t source_ip, int source_port, 114 uint32_t source_ip, int source_port,
114 uint32_t dest_ip, int dest_port, uint8_t *dest_arp, int ifindex) 115 uint32_t dest_ip, int dest_port, uint8_t *dest_arp, int ifindex)
@@ -154,6 +155,9 @@ int udhcp_raw_packet(struct dhcpMessage *payload,
154 packet.ip.ttl = IPDEFTTL; 155 packet.ip.ttl = IPDEFTTL;
155 packet.ip.check = udhcp_checksum(&(packet.ip), sizeof(packet.ip)); 156 packet.ip.check = udhcp_checksum(&(packet.ip), sizeof(packet.ip));
156 157
158 if (sizeof(struct udp_dhcp_packet) != 576)
159 BUG_sizeof_struct_udp_dhcp_packet_must_be_576();
160
157 result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0, 161 result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0,
158 (struct sockaddr *) &dest, sizeof(dest)); 162 (struct sockaddr *) &dest, sizeof(dest));
159 if (result <= 0) { 163 if (result <= 0) {