add compile-time check for correct DHCP packet size
This commit is contained in:
parent
4a5cf16a36
commit
c9cdeaa3fe
@ -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 */
|
/* 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,
|
int udhcp_raw_packet(struct dhcpMessage *payload,
|
||||||
uint32_t source_ip, int source_port,
|
uint32_t source_ip, int source_port,
|
||||||
uint32_t dest_ip, int dest_port, uint8_t *dest_arp, int ifindex)
|
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.ttl = IPDEFTTL;
|
||||||
packet.ip.check = udhcp_checksum(&(packet.ip), sizeof(packet.ip));
|
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,
|
result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0,
|
||||||
(struct sockaddr *) &dest, sizeof(dest));
|
(struct sockaddr *) &dest, sizeof(dest));
|
||||||
if (result <= 0) {
|
if (result <= 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user