Kea  1.9.9-git
dhcp4.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2004-2020 Internet Systems Consortium, Inc. ("ISC")
3  * Copyright (c) 1995-2003 by Internet Software Consortium
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * Internet Systems Consortium, Inc.
10  * 950 Charter Street
11  * Redwood City, CA 94063
12  * <info@isc.org>
13  * https://www.isc.org/
14  *
15  * This software has been written for Internet Systems Consortium
16  * by Ted Lemon in cooperation with Vixie Enterprises. To learn more
17  * about Internet Systems Consortium, see ``https://www.isc.org''.
18  * To learn more about Vixie Enterprises, see ``http://www.vix.com''.
19  */
20 
21 /*
22  * NOTE: This files is imported from ISC DHCP. It uses C notation.
23  * Format kept for easier merge.
24  */
25 
26 #ifndef DHCP_H
27 #define DHCP_H
28 
29 #include <stdint.h>
30 
37 
38 namespace isc {
39 namespace dhcp {
40 
41 /* IPv4 Broadcast address */
42 #define DHCP_IPV4_BROADCAST_ADDRESS "255.255.255.255"
43 
44 /* BOOTP (rfc951) message types */
45 enum BOOTPTypes {
48 };
49 
50 /* Possible values for flags field... */
51 static const uint16_t BOOTP_BROADCAST = 32768L;
52 
54 enum HType {
58  HTYPE_IEEE802 = 6,
64 };
66 
67 /* DHCP Option codes: */
69  DHO_PAD = 0, /* RFC2132 */
131  DHO_NWIP_DOMAIN_NAME = 62, /* RFC2242 */
132  DHO_NWIP_SUBOPTIONS = 63, /* RFC2242 */
133  DHO_NISP_DOMAIN_NAME = 64, /* RFC2132 */
146  DHO_USER_CLASS = 77, /* RFC3004 */
147  DHO_DIRECTORY_AGENT = 78, /* RFC2610 */
148  DHO_SERVICE_SCOPE = 79, /* RFC4039 */
149 // DHO_RAPID_COMMIT = 80, /* RFC4702 */
150  DHO_FQDN = 81, /* RFC4702 */
151  DHO_DHCP_AGENT_OPTIONS = 82, /* RFC3046 */
152 // DHO_ISNS = 83, /* RFC4174 */
153  // 84 is removed/unassigned
154  DHO_NDS_SERVERS = 85, /* RFC2241 */
155  DHO_NDS_TREE_NAME = 86, /* RFC2241 */
156  DHO_NDS_CONTEXT = 87, /* RFC2241 */
157  DHO_BCMCS_DOMAIN_NAME_LIST = 88, /* RFC4280 */
158  DHO_BCMCS_IPV4_ADDR = 89, /* RFC4280 */
159  DHO_AUTHENTICATE = 90, /* RFC3118 */
161  DHO_ASSOCIATED_IP = 92, /* RFC4388 */
162  DHO_SYSTEM = 93, /* RFC4578 */
163  DHO_NDI = 94, /* RFC4578 */
164 // DHO_LDAP = 95, /* RFC3679 */
165  // 96 is removed/unassigned
166  DHO_UUID_GUID = 97, /* RFC4578 */
167  DHO_USER_AUTH = 98, /* RFC2485 */
168  DHO_GEOCONF_CIVIC = 99, /* RFC4776 */
169  DHO_PCODE = 100, /* RFC4833 */
170  DHO_TCODE = 101, /* RFC4833 */
171  // 102-107 are removed/unassigned
172  DHO_V6_ONLY_PREFERRED = 108, /* RFC8925 */
173  // 109-111 are removed/unassigned
174  DHO_NETINFO_ADDR = 112, /* RFC3679 */
175  DHO_NETINFO_TAG = 113, /* RFC3679 */
176  DHO_URL = 114, /* RFC3679 */
177  // 115 is removed/unassigned
178  DHO_AUTO_CONFIG = 116, /* RFC2563 */
179  DHO_NAME_SERVICE_SEARCH = 117, /* RFC2937 */
180  DHO_SUBNET_SELECTION = 118, /* RFC3011 */
181  DHO_DOMAIN_SEARCH = 119, /* RFC3397 */
182 // DHO_SIP_SERVERS = 120, /* RFC3361 */
183 // DHO_CLASSLESS_STATIC_ROUTE = 121, /* RFC3442 */
184 // DHO_CCC = 122, /* RFC3495 */
185 // DHO_GEOCONF = 123, /* RFC3825 */
186  DHO_VIVCO_SUBOPTIONS = 124, /* RFC3925 */
187  DHO_VIVSO_SUBOPTIONS = 125, /* RFC3925 */
188  // 126-127 are removed/unassigned
189  // 128-135 have multiple definitions including PXE
190  DHO_PANA_AGENT = 136, /* RFC5192 */
191  DHO_V4_LOST = 137, /* RFC5223 */
192  DHO_CAPWAP_AC_V4 = 138, /* RFC5417 */
193 // DHO_IPV4_ADDR_MOS = 139, /* RFC5678 */
194 // DHO_IPV4_FQDN_MOS = 140, /* RFC5678 */
195  DHO_SIP_UA_CONF_SERVICE_DOMAINS = 141, /* RFC6011 */
196 // DHO_IPV4_ADDR_ANDSF = 142, /* RFC6153 */
197  // 143 is removed/unassigned
198 // DHO_GEOLOC = 144,
199 // DHO_FORCERENEW_NONCE_CAPABLE = 145, /* RFC5859 */
201  // 147-149 are removed/unassigned
202  // 150 have multiple definitions
203 // DHO_STATUS_CODE = 151,
204 // DHO_BASE_TIME = 152,
205 // DHO_START_TIME_OF_STATE = 153,
206 // DHO_QUERY_START_TIME = 154,
207 // DHO_QUERY_END_TIME = 155,
208 // DHO_DHCP_STATE = 156,
209 // DHO_DATA_SOURCE = 157,
210 // DHO_V4_PCP_SERVER = 158,
213  // 161-209 are removed/unassigned
214 // DHO_PATH_PREFIX = 210, /* RFC5071 */
215 // DHO_REBOOT_TIME = 211, /* RFC5071 */
216  DHO_6RD = 212, /* RFC5969 */
217  DHO_V4_ACCESS_DOMAIN = 213, /* RFC5986 */
218  // 214-219 are removed/unassigned
219 // DHO_SUBNET_ALLOC = 220,
220 // DHO_VSS = 221, /* RFC6607 */
221  // 222-223 are removed/unassigned
222  // 224-254 are reserved for private use
223 
224  DHO_END = 255 /* RFC2132 */
225 };
226 
227 /* DHCP message types. */
234  DHCPACK = 5,
235  DHCPNAK = 6,
238 // DHCPFORCERENEW = 9,
245 // DHCPACTIVELEASEQUERY = 16,
247  DHCPTLS = 18,
249 };
250 
251 static const uint16_t DHCP4_CLIENT_PORT = 68;
252 static const uint16_t DHCP4_SERVER_PORT = 67;
253 
256 static const uint32_t DHCP_OPTIONS_COOKIE = 0x63825363;
257 
258 /* Relay Agent Information option subtypes: */
259 
260 static const uint16_t RAI_OPTION_AGENT_CIRCUIT_ID = 1; // RFC3046
261 static const uint16_t RAI_OPTION_REMOTE_ID = 2; // RFC3046
262 /* option 3 is reserved and will never be assigned */
263 static const uint16_t RAI_OPTION_DOCSIS_DEVICE_CLASS = 4; // RFC3256
264 static const uint16_t RAI_OPTION_LINK_SELECTION = 5; // RFC3527
265 static const uint16_t RAI_OPTION_SUBSCRIBER_ID = 6; //RFC3993
266 static const uint16_t RAI_OPTION_RADIUS = 7; //RFC4014
267 static const uint16_t RAI_OPTION_AUTH = 8; //RFC4030
268 static const uint16_t RAI_OPTION_VSI = 9; // RFC4243
269 static const uint16_t RAI_OPTION_RELAY_FLAGS = 10; // RFC5010
270 static const uint16_t RAI_OPTION_SERVER_ID_OVERRIDE = 11; // RFC5107
271 static const uint16_t RAI_OPTION_RELAY_ID = 12; //RFC6925
272 static const uint16_t RAI_OPTION_ACCESS_TECHNO_TYPE = 13; // RFC7839
273 static const uint16_t RAI_OPTION_ACCESS_NETWORK_NAME = 14; // RFC7839
274 static const uint16_t RAI_OPTION_ACCESS_POINT_NAME = 15; // RFC7839
275 static const uint16_t RAI_OPTION_ACCESS_POINT_BSSID = 16; // RFC7839
276 static const uint16_t RAI_OPTION_OPERATOR_ID = 17; // RFC7839
277 static const uint16_t RAI_OPTION_OPERATOR_REALM = 18; // RFC7839
278 static const uint16_t RAI_OPTION_RELAY_PORT = 19; // RFC8357
279 static const uint16_t RAI_OPTION_VIRTUAL_SUBNET_SELECT = 151; //RFC6607
280 static const uint16_t RAI_OPTION_VIRTUAL_SUBNET_SELECT_CTRL = 152; //RFC6607
281 
282 // TODO: Following are leftovers from dhcp.h import from ISC DHCP
283 // They will be converted to C++-style defines once they will start
284 // to be used.
285 #if 0
286 /* FQDN suboptions: */
287 #define FQDN_NO_CLIENT_UPDATE 1
288 #define FQDN_SERVER_UPDATE 2
289 #define FQDN_ENCODED 3
290 #define FQDN_RCODE1 4
291 #define FQDN_RCODE2 5
292 #define FQDN_HOSTNAME 6
293 #define FQDN_DOMAINNAME 7
294 #define FQDN_FQDN 8
295 #define FQDN_SUBOPTION_COUNT 8
296 
297 /* Enterprise Suboptions: */
298 #define VENDOR_ISC_SUBOPTIONS 2495
299 
300 #endif
301 
302 /* Client identifier types */
303 static const uint8_t CLIENT_ID_OPTION_TYPE_DUID = 255;
304 
305 } // end of isc::dhcp namespace
306 } // end of isc namespace
307 
308 #endif /* DHCP_H */
Message Type option missing.
Definition: dhcp4.h:229
BOOTPTypes
Definition: dhcp4.h:45
The traffic captures we have from cable modems as well as this list by IANA: http://www.iana.org/assignments/ arp-parameters/arp-parameters.xhtml suggest that Ethernet (1) should be used in DOCSIS environment.
Definition: dhcp4.h:57
not specified or undefined
Definition: dhcp4.h:55
HType
Possible values for hardware type (htype) field.
Definition: dhcp4.h:54
DHCPOptionType
Definition: dhcp4.h:68
Ethernet 10Mbps.
Definition: dhcp4.h:56
Defines the logger used by the top-level component of kea-dhcp-ddns.
IEEE 802.2 Token Ring.
Definition: dhcp4.h:62
DHCPMessageType
Definition: dhcp4.h:228