blob: fbe54c884a4697c06102f4160b09e1b7e15eb422 [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;
Eric Andersenad953732004-01-30 23:45:53 +000027 uint8_t code;
Russ Dill61fb4892002-10-14 21:41:28 +000028};
29
Russ Dill4a9e34c2003-12-15 22:09:36 +000030extern struct dhcp_option dhcp_options[];
Russ Dill61fb4892002-10-14 21:41:28 +000031extern int option_lengths[];
32
Eric Andersenad953732004-01-30 23:45:53 +000033uint8_t *get_option(struct dhcpMessage *packet, int code);
34int end_option(uint8_t *optionptr);
35int add_option_string(uint8_t *optionptr, uint8_t *string);
36int add_simple_option(uint8_t *optionptr, uint8_t code, uint32_t data);
Russ Dill61fb4892002-10-14 21:41:28 +000037struct 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