1ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt/*
2ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt * DHCP definitions
3ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt * Copyright (c) 2014-2017, Qualcomm Atheros, Inc.
4ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt *
5ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt * This software may be distributed under the terms of the BSD license.
6ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt * See README for more details.
7ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt */
8ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt
9ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt#ifndef DHCP_H
10ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt#define DHCP_H
11ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt
12ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt#include <netinet/ip.h>
13d2986c2e737a8441ff5a791b6b56c1c8322ef3c9Dmitry Shmidt#if __FAVOR_BSD
14ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt#include <netinet/udp.h>
15d2986c2e737a8441ff5a791b6b56c1c8322ef3c9Dmitry Shmidt#else
16d2986c2e737a8441ff5a791b6b56c1c8322ef3c9Dmitry Shmidt#define __FAVOR_BSD 1
17d2986c2e737a8441ff5a791b6b56c1c8322ef3c9Dmitry Shmidt#include <netinet/udp.h>
18d2986c2e737a8441ff5a791b6b56c1c8322ef3c9Dmitry Shmidt#undef __FAVOR_BSD
19d2986c2e737a8441ff5a791b6b56c1c8322ef3c9Dmitry Shmidt#endif
20ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt
21ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt#define DHCP_SERVER_PORT 67
22ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt#define DHCP_CLIENT_PORT 68
23ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt
24ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidtstruct dhcp_data {
25ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 op;
26ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 htype;
27ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 hlen;
28ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 hops;
29ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be32 xid;
30ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be16 secs;
31ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be16 flags;
32ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be32 client_ip;
33ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be32 your_ip;
34ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be32 server_ip;
35ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be32 relay_ip;
36ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 hw_addr[16];
37ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 serv_name[64];
38ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 boot_file[128];
39ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt} STRUCT_PACKED;
40ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt
41ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidtstruct bootp_pkt {
42ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	struct iphdr iph;
43ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	struct udphdr udph;
44ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 op;
45ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 htype;
46ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 hlen;
47ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 hops;
48ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be32 xid;
49ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be16 secs;
50ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be16 flags;
51ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be32 client_ip;
52ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be32 your_ip;
53ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be32 server_ip;
54ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	be32 relay_ip;
55ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 hw_addr[16];
56ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 serv_name[64];
57ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 boot_file[128];
58ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	u8 exten[312];
59ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt} STRUCT_PACKED;
60ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt
61ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt#define DHCP_MAGIC 0x63825363
62ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt
63ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt/*
64ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt * IANA DHCP/BOOTP registry
65ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt * http://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml
66ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt*/
67ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidtenum dhcp_options {
68ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_PAD = 0,
69ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_SUBNET_MASK = 1,
70ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_TIME_OFFSET = 2,
71ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_ROUTER = 3,
72ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_TIME_SERVER = 4,
73ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NAME_SERVER = 5,
74ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_DOMAIN_NAME_SERVER = 6,
75ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_LOG_SERVER = 7,
76ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_QUOTES_SERVER = 8,
77ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_LPR_SERVER = 9,
78ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_IMPRESS_SERVER = 10,
79ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_RLP_SERVER = 11,
80ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_HOSTNAME = 12,
81ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_BOOT_FILE_SIZE = 13,
82ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_MERIT_DUMP_FILE = 14,
83ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_DOMAIN_NAME = 15,
84ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_SWAP_SERVER = 16,
85ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_ROOT_PATH = 17,
86ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_EXTENSION_PATH = 18,
87ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_FORWARD = 19,
88ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_SRC_RTE = 20,
89ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_POLICY_FILTER = 21,
90ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_MAX_DG_ASSEMBLY = 22,
91ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_DEFAULT_IP_TTL = 23,
92ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_MTU_TIMEOUT = 24,
93ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_MTU_PLATEAU = 25,
94ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_MTU_INTERFACE = 26,
95ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_ALL_SUBNETS_LOCAL = 27,
96ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_BROADCAST_ADDRESS = 28,
97ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_MASK_DISCOVERY = 29,
98ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_MASK_SUPPLIER = 30,
99ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_ROUTER_DISCOVERY = 31,
100ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_ROUTER_SOLICITATION_ADDRESS = 32,
101ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_STATIC_ROUTE = 33,
102ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_TRAILERS = 34,
103ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_ARP_TIMEOUT = 35,
104ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_ETHERNET = 36,
105ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_TCP_DEFAULT_TTL = 37,
106ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_TCP_KEEPALIVE_INTERVAL = 38,
107ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_TCP_KEEPALIVE_GARBAGE = 39,
108ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NIS_DOMAIN = 40,
109ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NIS_SERVERS = 41,
110ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NTP_SERVERS = 42,
111ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_VENDOR_SPECIFIC = 43,
112ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NETBIOS_NAME_SERVER = 44,
113ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NETBIOS_DISTRIBUTION_SERVER = 45,
114ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NETBIOS_NODE_TYPE = 46,
115ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NETBIOS_SCOPE = 47,
116ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_FONT_SERVER = 48,
117ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_DISPLAY_MANAGER = 49,
118ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_REQUESTED_IP_ADDRESS = 50,
119ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_IP_ADDRESS_LEASE_TIME = 51,
120ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_OVERLOAD = 52,
121ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_MSG_TYPE = 53,
122ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_SERVER_ID = 54,
123ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_PARAMETER_REQ_LIST = 55,
124ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_MESSAGE = 56,
125ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_MAX_MESSAGE_SIZE = 57,
126ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_RENEWAL_TIME = 58,
127ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_REBINDING_TIME = 59,
128ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_VENDOR_CLASS_ID = 60,
129ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_CLIENT_ID = 61,
130ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NETWARE_IP_DOMAIN = 62,
131ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NETWARE_IP_OPTION = 63,
132ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NIS_V3_DOMAIN = 64,
133ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NIS_V3_SERVERS = 65,
134ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_TFTP_SERVER_NAME = 66,
135ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_BOOT_FILE_NAME = 67,
136ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_HOME_AGENT_ADDRESSES = 68,
137ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_SMTP_SERVER = 69,
138ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_POP3_SERVER = 70,
139ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NNTP_SERVER = 71,
140ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_WWW_SERVER = 72,
141ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_FINGER_SERVER = 73,
142ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_IRC_SERVER = 74,
143ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_STREETTALK_SERVER = 75,
144ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_STDA_SERVER = 76,
145ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_USER_CLASS = 77,
146ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_DIRECTORY_AGENT = 78,
147ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_SERVICE_SCOPE = 79,
148ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_RAPID_COMMIT = 80,
149ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_CLIENT_FQDN = 81,
150ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_RELAY_AGENT_INFO = 82,
151ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_ISNS = 83,
152ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NDS_SERVERS = 85,
153ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NDS_TREE_NAME = 86,
154ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NDS_CONTEXT = 87,
155ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_BCMCS_CONTROLLER_DOMAIN_NAME_LIST = 88,
156ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_BCMCS_CONTROLLER_IPV4_ADDRESS = 89,
157ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_AUTHENTICATION = 90,
158ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_CLIENT_LAST_TRANSACTION_TIME = 91,
159ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_ASSOCIATED_IP = 92,
160ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_CLIENT_SYSYEM = 93,
161ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_CLIENT_NDI = 94,
162ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_LDAP = 95,
163ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_UUID_GUID = 97,
164ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_USER_AUTH = 98,
165ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_GEOCONF_CIVIC = 99,
166ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_PCODE = 100,
167ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_TCODE = 101,
168ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NETINFO_ADDRESS = 112,
169ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NETINFO_TAG = 113,
170ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_URL = 114,
171ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_AUTO_CONFIG = 116,
172ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_NAME_SERVICE_SEARCH = 117,
173ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_SUBNET_SELECTION = 118,
174ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_DOMAIN_SEARCH = 119,
175ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_SIP_SERVERS_DCP = 120,
176ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_CLASSLESS_STATIC_ROUTE = 121,
177ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_CCC = 122,
178ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_GEOCONF = 123,
179ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_V_I_VENDOR_CLASS = 124,
180ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_V_I_VENDOR_SPECIFIC_INFO = 125,
181ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_PANA_AGENT = 136,
182ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_V4_LOST = 137,
183ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_CAPWAP_AC_V4 = 138,
184ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_IPV4_ADDRESS_MOS = 139,
185ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_IPV4_FQDN_MOS = 140,
186ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_SIP_UA_CONF = 141,
187ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_IPV4_ADDRESS_ANDSF = 142,
188ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_GEOLOC = 144,
189ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_FORCERENEW_NONCE_CAPABLE = 145,
190ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_RDNSS_SELECTION = 146,
191ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_TFTP_SERVER_ADDRESS = 150,
192ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_STATUS_CODE = 151,
193ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_BASE_TIME = 152,
194ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_START_TIME_OF_STATE = 153,
195ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_QUERY_START_TIME = 154,
196ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_QUERY_END_TIME = 155,
197ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_STATE = 156,
198ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_DATA_SOURCE = 157,
199ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_V4_PCP_SERVER = 158,
200ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_V4_PORTPARAMS = 159,
201ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_CAPTIVE_PORTAL = 160,
202ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_CONF_FILE = 209,
203ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_PATH_PREFIX = 210,
204ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_REBOOT_TIME = 211,
205ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_6RD = 212,
206ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_V4_ACCESS_DOMAIN = 213,
207ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_SUBNET_ALLOCATION = 220,
208ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_VSS = 221,
209ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_OPT_END = 255
210ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt};
211ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt
212ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidtenum dhcp_message_types {
213ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPDISCOVER = 1,
214ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPOFFER = 2,
215ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPREQUEST = 3,
216ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPDECLINE = 4,
217ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPACK = 5,
218ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPNAK = 6,
219ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPRELEASE = 7,
220ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPINFORM = 8,
221ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPFORCERENEW = 9,
222ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPLEASEQUERY = 10,
223ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPLEASEUNASSIGNED = 11,
224ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPLEASEUNKNOWN = 12,
225ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPLEASEACTIVE = 13,
226ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPBULKLEASEQUERY = 14,
227ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPLEASEQUERYDONE = 15,
228ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPACTIVELEASEQUERY = 16,
229ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPLEASEQUERYSTATUS = 17,
230ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCPTLS = 18,
231ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt};
232ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt
233ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidtenum dhcp_relay_agent_suboptions {
234ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_AGENT_CIRCUIT_ID = 1,
235ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_AGENT_REMOTE_ID = 2,
236ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_DOCSIS_DEVICE_CLASS = 4,
237ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_LINK_SELECTION = 5,
238ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_SUBSCRIBE_ID = 6,
239ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_RADIUS_ATTRIBUTES = 7,
240ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_AUTHENTICATION = 8,
241ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_VEDOR_SPECIFIC = 9,
242ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_RELAY_AGENT_FLAGS = 10,
243ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_SERVER_ID_OVERRIDE = 11,
244ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_RELAY_AGENT_ID = 12,
245ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_ACCESS_TECHNOLOGY_TYPE = 13,
246ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_ACCESS_NETWORK_NAME = 14,
247ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_ACCESS_POINT_NAME = 15,
248ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_ACCESS_POINT_BSSID = 16,
249ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_OPERATOR_ID = 17,
250ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_OPERATOR_REALM = 18,
251ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_DHCPV4_VIRTUAL_SUBNET_SELECTION = 151,
252ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	DHCP_RELAY_OPT_DHCPV4_VIRTUAL_SUBNET_SELECTION_CONTROL = 152,
253ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt};
254ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt
255ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidtenum access_technology_types {
256ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	ACCESS_TECHNOLOGY_VIRTUAL = 1,
257ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	ACCESS_TECHNOLOGY_PPP = 2,
258ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	ACCESS_TECHNOLOGY_ETHERNET = 3,
259ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	ACCESS_TECHNOLOGY_WLAN = 4,
260ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt	ACCESS_TECHNOLOGY_WIMAX = 5,
261ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt};
262ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt
263ebd93af924f6e54fb4982b3312ff875a4896b62bDmitry Shmidt#endif /* DHCP_H */
264