Kea 2.2.0
dhcp4.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2004-2022 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
38namespace isc {
39namespace dhcp {
40
41/* IPv4 Broadcast address */
42#define DHCP_IPV4_BROADCAST_ADDRESS "255.255.255.255"
43
44/* BOOTP (rfc951) message types */
47 BOOTREPLY = 2
48};
49
50/* Possible values for flags field... */
51static const uint16_t BOOTP_BROADCAST = 32768L;
52
54enum HType {
57 HTYPE_DOCSIS = 1,
63 HTYPE_FDDI = 8
65};
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 // URL option was replaced with captive portal.
177 // DHO_URL = 114, /* RFC3679 */
178 DHO_V4_CAPTIVE_PORTAL = 114, /* RFC8910 */
179
180 // 115 is removed/unassigned
181 DHO_AUTO_CONFIG = 116, /* RFC2563 */
182 DHO_NAME_SERVICE_SEARCH = 117, /* RFC2937 */
183 DHO_SUBNET_SELECTION = 118, /* RFC3011 */
184 DHO_DOMAIN_SEARCH = 119, /* RFC3397 */
185// DHO_SIP_SERVERS = 120, /* RFC3361 */
186// DHO_CLASSLESS_STATIC_ROUTE = 121, /* RFC3442 */
187// DHO_CCC = 122, /* RFC3495 */
188// DHO_GEOCONF = 123, /* RFC3825 */
189 DHO_VIVCO_SUBOPTIONS = 124, /* RFC3925 */
190 DHO_VIVSO_SUBOPTIONS = 125, /* RFC3925 */
191 // 126-127 are removed/unassigned
192 // 128-135 have multiple definitions including PXE
193 DHO_PANA_AGENT = 136, /* RFC5192 */
194 DHO_V4_LOST = 137, /* RFC5223 */
195 DHO_CAPWAP_AC_V4 = 138, /* RFC5417 */
196// DHO_IPV4_ADDR_MOS = 139, /* RFC5678 */
197// DHO_IPV4_FQDN_MOS = 140, /* RFC5678 */
199// DHO_IPV4_ADDR_ANDSF = 142, /* RFC6153 */
200 // 143 is removed/unassigned
201// DHO_GEOLOC = 144,
202// DHO_FORCERENEW_NONCE_CAPABLE = 145, /* RFC5859 */
204 // 147-149 are removed/unassigned
205 // 150 have multiple definitions
206// DHO_STATUS_CODE = 151,
207// DHO_BASE_TIME = 152,
208// DHO_START_TIME_OF_STATE = 153,
209// DHO_QUERY_START_TIME = 154,
210// DHO_QUERY_END_TIME = 155,
211// DHO_DHCP_STATE = 156,
212// DHO_DATA_SOURCE = 157,
213// DHO_V4_PCP_SERVER = 158,
215 // 160 used to be assigned in RFC7710, but was removed in RFC8910
216 // The Captive Portal option now uses code 114.
217 // 160-209 are removed/unassigned
218// DHO_PATH_PREFIX = 210, /* RFC5071 */
219// DHO_REBOOT_TIME = 211, /* RFC5071 */
220 DHO_6RD = 212, /* RFC5969 */
221 DHO_V4_ACCESS_DOMAIN = 213, /* RFC5986 */
222 // 214-219 are removed/unassigned
223// DHO_SUBNET_ALLOC = 220,
224// DHO_VSS = 221, /* RFC6607 */
225 // 222-223 are removed/unassigned
226 // 224-254 are reserved for private use
227
228 DHO_END = 255 /* RFC2132 */
230
231/* DHCP message types. */
242// DHCPFORCERENEW = 9,
249// DHCPACTIVELEASEQUERY = 16,
254
255static const uint16_t DHCP4_CLIENT_PORT = 68;
256static const uint16_t DHCP4_SERVER_PORT = 67;
257
260static const uint32_t DHCP_OPTIONS_COOKIE = 0x63825363;
261
262/* Relay Agent Information option subtypes: */
263
264static const uint16_t RAI_OPTION_AGENT_CIRCUIT_ID = 1; // RFC3046
265static const uint16_t RAI_OPTION_REMOTE_ID = 2; // RFC3046
266/* option 3 is reserved and will never be assigned */
267static const uint16_t RAI_OPTION_DOCSIS_DEVICE_CLASS = 4; // RFC3256
268static const uint16_t RAI_OPTION_LINK_SELECTION = 5; // RFC3527
269static const uint16_t RAI_OPTION_SUBSCRIBER_ID = 6; //RFC3993
270static const uint16_t RAI_OPTION_RADIUS = 7; //RFC4014
271static const uint16_t RAI_OPTION_AUTH = 8; //RFC4030
272static const uint16_t RAI_OPTION_VSI = 9; // RFC4243
273static const uint16_t RAI_OPTION_RELAY_FLAGS = 10; // RFC5010
274static const uint16_t RAI_OPTION_SERVER_ID_OVERRIDE = 11; // RFC5107
275static const uint16_t RAI_OPTION_RELAY_ID = 12; //RFC6925
276static const uint16_t RAI_OPTION_ACCESS_TECHNO_TYPE = 13; // RFC7839
277static const uint16_t RAI_OPTION_ACCESS_NETWORK_NAME = 14; // RFC7839
278static const uint16_t RAI_OPTION_ACCESS_POINT_NAME = 15; // RFC7839
279static const uint16_t RAI_OPTION_ACCESS_POINT_BSSID = 16; // RFC7839
280static const uint16_t RAI_OPTION_OPERATOR_ID = 17; // RFC7839
281static const uint16_t RAI_OPTION_OPERATOR_REALM = 18; // RFC7839
282static const uint16_t RAI_OPTION_RELAY_PORT = 19; // RFC8357
283static const uint16_t RAI_OPTION_VIRTUAL_SUBNET_SELECT = 151; //RFC6607
284static const uint16_t RAI_OPTION_VIRTUAL_SUBNET_SELECT_CTRL = 152; //RFC6607
285
286// TODO: Following are leftovers from dhcp.h import from ISC DHCP
287// They will be converted to C++-style defines once they will start
288// to be used.
289#if 0
290/* FQDN suboptions: */
291#define FQDN_NO_CLIENT_UPDATE 1
292#define FQDN_SERVER_UPDATE 2
293#define FQDN_ENCODED 3
294#define FQDN_RCODE1 4
295#define FQDN_RCODE2 5
296#define FQDN_HOSTNAME 6
297#define FQDN_DOMAINNAME 7
298#define FQDN_FQDN 8
299#define FQDN_SUBOPTION_COUNT 8
300
301/* Enterprise Suboptions: */
302#define VENDOR_ISC_SUBOPTIONS 2495
303
304#endif
305
306/* Client identifier types */
307static const uint8_t CLIENT_ID_OPTION_TYPE_DUID = 255;
308
309} // end of isc::dhcp namespace
310} // end of isc namespace
311
312#endif /* DHCP_H */
DHCPOptionType
Definition: dhcp4.h:68
@ DHO_NNTP_SERVER
Definition: dhcp4.h:140
@ DHO_NON_LOCAL_SOURCE_ROUTING
Definition: dhcp4.h:89
@ DHO_STREETTALK_SERVER
Definition: dhcp4.h:144
@ DHO_IMPRESS_SERVERS
Definition: dhcp4.h:79
@ DHO_DHCP_MAX_MESSAGE_SIZE
Definition: dhcp4.h:126
@ DHO_DHCP_MESSAGE
Definition: dhcp4.h:125
@ DHO_DIRECTORY_AGENT
Definition: dhcp4.h:147
@ DHO_BOOT_SIZE
Definition: dhcp4.h:82
@ DHO_NETBIOS_NODE_TYPE
Definition: dhcp4.h:115
@ DHO_FONT_SERVERS
Definition: dhcp4.h:117
@ DHO_SUBNET_MASK
Definition: dhcp4.h:70
@ DHO_6RD
Definition: dhcp4.h:220
@ DHO_ROUTERS
Definition: dhcp4.h:72
@ DHO_NWIP_DOMAIN_NAME
Definition: dhcp4.h:131
@ DHO_NAME_SERVICE_SEARCH
Definition: dhcp4.h:182
@ DHO_LOG_SERVERS
Definition: dhcp4.h:76
@ DHO_DOMAIN_NAME
Definition: dhcp4.h:84
@ DHO_NETBIOS_SCOPE
Definition: dhcp4.h:116
@ DHO_TCODE
Definition: dhcp4.h:170
@ DHO_TFTP_SERVER_NAME
Definition: dhcp4.h:135
@ DHO_V4_PORTPARAMS
Definition: dhcp4.h:214
@ DHO_DOMAIN_NAME_SERVERS
Definition: dhcp4.h:75
@ DHO_IP_FORWARDING
Definition: dhcp4.h:88
@ DHO_VENDOR_CLASS_IDENTIFIER
Definition: dhcp4.h:129
@ DHO_TRAILER_ENCAPSULATION
Definition: dhcp4.h:103
@ DHO_TIME_SERVERS
Definition: dhcp4.h:73
@ DHO_SERVICE_SCOPE
Definition: dhcp4.h:148
@ DHO_GEOCONF_CIVIC
Definition: dhcp4.h:168
@ DHO_NETINFO_ADDR
Definition: dhcp4.h:174
@ DHO_DHCP_REBINDING_TIME
Definition: dhcp4.h:128
@ DHO_DHCP_MESSAGE_TYPE
Definition: dhcp4.h:122
@ DHO_V6_ONLY_PREFERRED
Definition: dhcp4.h:172
@ DHO_INTERFACE_MTU
Definition: dhcp4.h:95
@ DHO_UUID_GUID
Definition: dhcp4.h:166
@ DHO_DHCP_SERVER_IDENTIFIER
Definition: dhcp4.h:123
@ DHO_SIP_UA_CONF_SERVICE_DOMAINS
Definition: dhcp4.h:198
@ DHO_HOST_NAME
Definition: dhcp4.h:81
@ DHO_DEFAULT_TCP_TTL
Definition: dhcp4.h:106
@ DHO_STATIC_ROUTES
Definition: dhcp4.h:102
@ DHO_DHCP_CLIENT_IDENTIFIER
Definition: dhcp4.h:130
@ DHO_COOKIE_SERVERS
Definition: dhcp4.h:77
@ DHO_ROOT_PATH
Definition: dhcp4.h:86
@ DHO_NTP_SERVERS
Definition: dhcp4.h:111
@ DHO_BOOT_FILE_NAME
Definition: dhcp4.h:136
@ DHO_VIVCO_SUBOPTIONS
Definition: dhcp4.h:189
@ DHO_AUTO_CONFIG
Definition: dhcp4.h:181
@ DHO_ROUTER_SOLICITATION_ADDRESS
Definition: dhcp4.h:101
@ DHO_PATH_MTU_AGING_TIMEOUT
Definition: dhcp4.h:93
@ DHO_NDI
Definition: dhcp4.h:163
@ DHO_RDNSS_SELECT
Definition: dhcp4.h:203
@ DHO_DHCP_REQUESTED_ADDRESS
Definition: dhcp4.h:119
@ DHO_NISP_SERVER_ADDR
Definition: dhcp4.h:134
@ DHO_RESOURCE_LOCATION_SERVERS
Definition: dhcp4.h:80
@ DHO_NETINFO_TAG
Definition: dhcp4.h:175
@ DHO_END
Definition: dhcp4.h:228
@ DHO_PAD
Definition: dhcp4.h:69
@ DHO_NDS_TREE_NAME
Definition: dhcp4.h:155
@ DHO_ALL_SUBNETS_LOCAL
Definition: dhcp4.h:96
@ DHO_TCP_KEEPALIVE_INTERVAL
Definition: dhcp4.h:107
@ DHO_DHCP_OPTION_OVERLOAD
Definition: dhcp4.h:121
@ DHO_SMTP_SERVER
Definition: dhcp4.h:138
@ DHO_POLICY_FILTER
Definition: dhcp4.h:90
@ DHO_DHCP_AGENT_OPTIONS
Definition: dhcp4.h:151
@ DHO_TIME_OFFSET
Definition: dhcp4.h:71
@ DHO_PATH_MTU_PLATEAU_TABLE
Definition: dhcp4.h:94
@ DHO_BCMCS_DOMAIN_NAME_LIST
Definition: dhcp4.h:157
@ DHO_PERFORM_MASK_DISCOVERY
Definition: dhcp4.h:98
@ DHO_WWW_SERVER
Definition: dhcp4.h:141
@ DHO_SYSTEM
Definition: dhcp4.h:162
@ DHO_ROUTER_DISCOVERY
Definition: dhcp4.h:100
@ DHO_NDS_SERVERS
Definition: dhcp4.h:154
@ DHO_ASSOCIATED_IP
Definition: dhcp4.h:161
@ DHO_VENDOR_ENCAPSULATED_OPTIONS
Definition: dhcp4.h:112
@ DHO_NDS_CONTEXT
Definition: dhcp4.h:156
@ DHO_NAME_SERVERS
Definition: dhcp4.h:74
@ DHO_CLIENT_LAST_TRANSACTION_TIME
Definition: dhcp4.h:160
@ DHO_SUBNET_SELECTION
Definition: dhcp4.h:183
@ DHO_DOMAIN_SEARCH
Definition: dhcp4.h:184
@ DHO_IRC_SERVER
Definition: dhcp4.h:143
@ DHO_NIS_DOMAIN
Definition: dhcp4.h:109
@ DHO_LPR_SERVERS
Definition: dhcp4.h:78
@ DHO_DEFAULT_IP_TTL
Definition: dhcp4.h:92
@ DHO_NETBIOS_DD_SERVER
Definition: dhcp4.h:114
@ DHO_HOME_AGENT_ADDRS
Definition: dhcp4.h:137
@ DHO_BCMCS_IPV4_ADDR
Definition: dhcp4.h:158
@ DHO_MERIT_DUMP
Definition: dhcp4.h:83
@ DHO_V4_LOST
Definition: dhcp4.h:194
@ DHO_V4_CAPTIVE_PORTAL
Definition: dhcp4.h:178
@ DHO_TCP_KEEPALIVE_GARBAGE
Definition: dhcp4.h:108
@ DHO_X_DISPLAY_MANAGER
Definition: dhcp4.h:118
@ DHO_IEEE802_3_ENCAPSULATION
Definition: dhcp4.h:105
@ DHO_USER_AUTH
Definition: dhcp4.h:167
@ DHO_STDASERVER
Definition: dhcp4.h:145
@ DHO_DHCP_PARAMETER_REQUEST_LIST
Definition: dhcp4.h:124
@ DHO_PCODE
Definition: dhcp4.h:169
@ DHO_USER_CLASS
Definition: dhcp4.h:146
@ DHO_ARP_CACHE_TIMEOUT
Definition: dhcp4.h:104
@ DHO_POP3_SERVER
Definition: dhcp4.h:139
@ DHO_NWIP_SUBOPTIONS
Definition: dhcp4.h:132
@ DHO_CAPWAP_AC_V4
Definition: dhcp4.h:195
@ DHO_MAX_DGRAM_REASSEMBLY
Definition: dhcp4.h:91
@ DHO_FQDN
Definition: dhcp4.h:150
@ DHO_EXTENSIONS_PATH
Definition: dhcp4.h:87
@ DHO_MASK_SUPPLIER
Definition: dhcp4.h:99
@ DHO_NIS_SERVERS
Definition: dhcp4.h:110
@ DHO_FINGER_SERVER
Definition: dhcp4.h:142
@ DHO_BROADCAST_ADDRESS
Definition: dhcp4.h:97
@ DHO_AUTHENTICATE
Definition: dhcp4.h:159
@ DHO_VIVSO_SUBOPTIONS
Definition: dhcp4.h:190
@ DHO_NISP_DOMAIN_NAME
Definition: dhcp4.h:133
@ DHO_DHCP_RENEWAL_TIME
Definition: dhcp4.h:127
@ DHO_NETBIOS_NAME_SERVERS
Definition: dhcp4.h:113
@ DHO_SWAP_SERVER
Definition: dhcp4.h:85
@ DHO_PANA_AGENT
Definition: dhcp4.h:193
@ DHO_DHCP_LEASE_TIME
Definition: dhcp4.h:120
@ DHO_V4_ACCESS_DOMAIN
Definition: dhcp4.h:221
BOOTPTypes
Definition: dhcp4.h:45
@ BOOTREQUEST
Definition: dhcp4.h:46
@ BOOTREPLY
Definition: dhcp4.h:47
DHCPMessageType
Definition: dhcp4.h:232
@ DHCPLEASEQUERYSTATUS
Definition: dhcp4.h:250
@ DHCPTLS
Definition: dhcp4.h:251
@ DHCPREQUEST
Definition: dhcp4.h:236
@ DHCPLEASEQUERYDONE
Definition: dhcp4.h:248
@ DHCPLEASEUNKNOWN
Definition: dhcp4.h:245
@ DHCP_TYPES_EOF
Definition: dhcp4.h:252
@ DHCPOFFER
Definition: dhcp4.h:235
@ DHCPLEASEACTIVE
Definition: dhcp4.h:246
@ DHCPLEASEQUERY
Definition: dhcp4.h:243
@ DHCPDECLINE
Definition: dhcp4.h:237
@ DHCPNAK
Definition: dhcp4.h:239
@ DHCPRELEASE
Definition: dhcp4.h:240
@ DHCPLEASEUNASSIGNED
Definition: dhcp4.h:244
@ DHCPDISCOVER
Definition: dhcp4.h:234
@ DHCPBULKLEASEQUERY
Definition: dhcp4.h:247
@ DHCP_NOTYPE
Message Type option missing.
Definition: dhcp4.h:233
@ DHCPINFORM
Definition: dhcp4.h:241
@ DHCPACK
Definition: dhcp4.h:238
HType
Possible values for hardware type (htype) field.
Definition: dhcp4.h:54
@ HTYPE_UNDEFINED
not specified or undefined
Definition: dhcp4.h:55
@ HTYPE_IEEE802
IEEE 802.2 Token Ring.
Definition: dhcp4.h:62
@ HTYPE_FDDI
FDDI.
Definition: dhcp4.h:63
@ HTYPE_DOCSIS
The traffic captures we have from cable modems as well as this list by IANA: http://www....
Definition: dhcp4.h:57
@ HTYPE_ETHER
Ethernet 10Mbps.
Definition: dhcp4.h:56
Defines the logger used by the top-level component of kea-lfc.