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