#ifndef DHCP_H #define DHCP_H #include struct dhcp_option { void *data; int len; }; struct dhcp_packet { uint8_t op; /* 0 */ uint8_t htype; /* 1 */ uint8_t hlen; /* 2 */ uint8_t hops; /* 3 */ uint32_t xid; /* 4 */ uint16_t secs; /* 8 */ uint16_t flags; /* 10 */ uint32_t ciaddr; /* 12 */ uint32_t yiaddr; /* 16 */ uint32_t siaddr; /* 20 */ uint32_t giaddr; /* 24 */ uint8_t chaddr[16]; /* 28 */ uint8_t sname[64]; /* 44 */ uint8_t file[128]; /* 108 */ uint32_t magic; /* 236 */ uint8_t options[4]; /* 240 */ }; #define DHCP_VENDOR_MAGIC 0x63825363 int dhcp_pack_packet(void *packet, size_t *len, const struct dhcp_option opt[256]); int dhcp_unpack_packet(const void *packet, size_t len, struct dhcp_option opt[256]); #endif /* DHCP_H */