blob: afef924297ca7f694e571cbd4fc703d0143d6b1c [file] [log] [blame]
#ifndef DHCP_H
#define DHCP_H
#include <inttypes.h>
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 */