1/* options.h */ 2#ifndef _OPTIONS_H 3#define _OPTIONS_H 4 5#include "packet.h" 6 7#define TYPE_MASK 0x0F 8 9enum { 10 OPTION_IP=1, 11 OPTION_IP_PAIR, 12 OPTION_STRING, 13 OPTION_BOOLEAN, 14 OPTION_U8, 15 OPTION_U16, 16 OPTION_S16, 17 OPTION_U32, 18 OPTION_S32 19}; 20 21#define OPTION_REQ 0x10 /* have the client request this option */ 22#define OPTION_LIST 0x20 /* There can be a list of 1 or more of these */ 23 24struct dhcp_option { 25 char name[10]; 26 char flags; 27 unsigned char code; 28}; 29 30extern struct dhcp_option options[]; 31extern int option_lengths[]; 32 33unsigned char *get_option(struct dhcpMessage *packet, int code); 34int end_option(unsigned char *optionptr); 35int add_option_string(unsigned char *optionptr, unsigned char *string); 36int add_simple_option(unsigned char *optionptr, unsigned char code, u_int32_t data); 37struct option_set *find_option(struct option_set *opt_list, char code); 38void attach_option(struct option_set **opt_list, struct dhcp_option *option, char *buffer, int length); 39 40#endif 41