/* options.h */ #ifndef _OPTIONS_H #define _OPTIONS_H #include "packet.h" #define TYPE_MASK 0x0F enum { OPTION_IP=1, OPTION_IP_PAIR, OPTION_STRING, OPTION_BOOLEAN, OPTION_U8, OPTION_U16, OPTION_S16, OPTION_U32, OPTION_S32 }; #define OPTION_REQ 0x10 /* have the client request this option */ #define OPTION_LIST 0x20 /* There can be a list of 1 or more of these */ struct dhcp_option { char name[10]; char flags; uint8_t code; }; extern struct dhcp_option dhcp_options[]; extern int option_lengths[]; uint8_t *get_option(struct dhcpMessage *packet, int code); int end_option(uint8_t *optionptr); int add_option_string(uint8_t *optionptr, uint8_t *string); int add_simple_option(uint8_t *optionptr, uint8_t code, uint32_t data); #endif