blob: 1fded2ef4d1a9c1a37d6e8fc1c5cc1a4de3da114 [file] [log] [blame]
Russ Dill61fb4892002-10-14 21:41:28 +00001/* 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 */
Russ Dill61fb4892002-10-14 21:41:28 +000023
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