|
@@ -1,7 +1,3 @@
|
|
|
-/* dhcp.h
|
|
|
-
|
|
|
- Protocol structures... */
|
|
|
-
|
|
|
/*
|
|
|
* Copyright (c) 2004-2011 by Internet Systems Consortium, Inc. ("ISC")
|
|
|
* Copyright (c) 1995-2003 by Internet Software Consortium
|
|
@@ -30,7 +26,7 @@
|
|
|
* To learn more about Vixie Enterprises, see ``http://www.vix.com''.
|
|
|
*/
|
|
|
|
|
|
-/*
|
|
|
+/*
|
|
|
* NOTE: This files is imported from ISC DHCP. It uses C notation.
|
|
|
* Format kept for easier merge.
|
|
|
*/
|
|
@@ -38,154 +34,151 @@
|
|
|
#ifndef DHCP_H
|
|
|
#define DHCP_H
|
|
|
|
|
|
-#define DHCP_UDP_OVERHEAD (20 + /* IP header */ \
|
|
|
- 8) /* UDP header */
|
|
|
-#define DHCP_SNAME_LEN 64
|
|
|
-#define DHCP_FILE_LEN 128
|
|
|
-#define DHCP_FIXED_NON_UDP 236
|
|
|
-#define DHCP_FIXED_LEN (DHCP_FIXED_NON_UDP + DHCP_UDP_OVERHEAD)
|
|
|
- /* Everything but options. */
|
|
|
-#define BOOTP_MIN_LEN 300
|
|
|
-
|
|
|
-#define DHCP_MTU_MAX 1500
|
|
|
-#define DHCP_MTU_MIN 576
|
|
|
+#include <stdint.h>
|
|
|
|
|
|
-#define DHCP_MAX_OPTION_LEN (DHCP_MTU_MAX - DHCP_FIXED_LEN)
|
|
|
-#define DHCP_MIN_OPTION_LEN (DHCP_MTU_MIN - DHCP_FIXED_LEN)
|
|
|
+namespace isc {
|
|
|
+namespace dhcp {
|
|
|
|
|
|
/* BOOTP (rfc951) message types */
|
|
|
-#define BOOTREQUEST 1
|
|
|
-#define BOOTREPLY 2
|
|
|
+ enum BOOTPTypes {
|
|
|
+ BOOTREQUEST = 1,
|
|
|
+ BOOTREPLY = 2 };
|
|
|
|
|
|
/* Possible values for flags field... */
|
|
|
-#define BOOTP_BROADCAST 32768L
|
|
|
+ static const uint16_t BOOTP_BROADCAST = 32768L;
|
|
|
|
|
|
/* Possible values for hardware type (htype) field... */
|
|
|
-#define HTYPE_ETHER 1 /* Ethernet 10Mbps */
|
|
|
-#define HTYPE_IEEE802 6 /* IEEE 802.2 Token Ring... */
|
|
|
-#define HTYPE_FDDI 8 /* FDDI... */
|
|
|
+ enum HType {
|
|
|
+ HTYPE_ETHER = 1, /* Ethernet 10Mbps */
|
|
|
+ HTYPE_IEEE802 = 6, /* IEEE 802.2 Token Ring */
|
|
|
+ HTYPE_FDDI = 8 /* FDDI */
|
|
|
+ /// TODO Add infiniband here
|
|
|
+ };
|
|
|
|
|
|
/* Magic cookie validating dhcp options field (and bootp vendor
|
|
|
extensions field). */
|
|
|
-#define DHCP_OPTIONS_COOKIE "\143\202\123\143"
|
|
|
+#define DHCP_OPTIONS_COOKIE "\143\202\123\143"
|
|
|
|
|
|
/* DHCP Option codes: */
|
|
|
-
|
|
|
-#define DHO_PAD 0
|
|
|
-#define DHO_SUBNET_MASK 1
|
|
|
-#define DHO_TIME_OFFSET 2
|
|
|
-#define DHO_ROUTERS 3
|
|
|
-#define DHO_TIME_SERVERS 4
|
|
|
-#define DHO_NAME_SERVERS 5
|
|
|
-#define DHO_DOMAIN_NAME_SERVERS 6
|
|
|
-#define DHO_LOG_SERVERS 7
|
|
|
-#define DHO_COOKIE_SERVERS 8
|
|
|
-#define DHO_LPR_SERVERS 9
|
|
|
-#define DHO_IMPRESS_SERVERS 10
|
|
|
-#define DHO_RESOURCE_LOCATION_SERVERS 11
|
|
|
-#define DHO_HOST_NAME 12
|
|
|
-#define DHO_BOOT_SIZE 13
|
|
|
-#define DHO_MERIT_DUMP 14
|
|
|
-#define DHO_DOMAIN_NAME 15
|
|
|
-#define DHO_SWAP_SERVER 16
|
|
|
-#define DHO_ROOT_PATH 17
|
|
|
-#define DHO_EXTENSIONS_PATH 18
|
|
|
-#define DHO_IP_FORWARDING 19
|
|
|
-#define DHO_NON_LOCAL_SOURCE_ROUTING 20
|
|
|
-#define DHO_POLICY_FILTER 21
|
|
|
-#define DHO_MAX_DGRAM_REASSEMBLY 22
|
|
|
-#define DHO_DEFAULT_IP_TTL 23
|
|
|
-#define DHO_PATH_MTU_AGING_TIMEOUT 24
|
|
|
-#define DHO_PATH_MTU_PLATEAU_TABLE 25
|
|
|
-#define DHO_INTERFACE_MTU 26
|
|
|
-#define DHO_ALL_SUBNETS_LOCAL 27
|
|
|
-#define DHO_BROADCAST_ADDRESS 28
|
|
|
-#define DHO_PERFORM_MASK_DISCOVERY 29
|
|
|
-#define DHO_MASK_SUPPLIER 30
|
|
|
-#define DHO_ROUTER_DISCOVERY 31
|
|
|
-#define DHO_ROUTER_SOLICITATION_ADDRESS 32
|
|
|
-#define DHO_STATIC_ROUTES 33
|
|
|
-#define DHO_TRAILER_ENCAPSULATION 34
|
|
|
-#define DHO_ARP_CACHE_TIMEOUT 35
|
|
|
-#define DHO_IEEE802_3_ENCAPSULATION 36
|
|
|
-#define DHO_DEFAULT_TCP_TTL 37
|
|
|
-#define DHO_TCP_KEEPALIVE_INTERVAL 38
|
|
|
-#define DHO_TCP_KEEPALIVE_GARBAGE 39
|
|
|
-#define DHO_NIS_DOMAIN 40
|
|
|
-#define DHO_NIS_SERVERS 41
|
|
|
-#define DHO_NTP_SERVERS 42
|
|
|
-#define DHO_VENDOR_ENCAPSULATED_OPTIONS 43
|
|
|
-#define DHO_NETBIOS_NAME_SERVERS 44
|
|
|
-#define DHO_NETBIOS_DD_SERVER 45
|
|
|
-#define DHO_NETBIOS_NODE_TYPE 46
|
|
|
-#define DHO_NETBIOS_SCOPE 47
|
|
|
-#define DHO_FONT_SERVERS 48
|
|
|
-#define DHO_X_DISPLAY_MANAGER 49
|
|
|
-#define DHO_DHCP_REQUESTED_ADDRESS 50
|
|
|
-#define DHO_DHCP_LEASE_TIME 51
|
|
|
-#define DHO_DHCP_OPTION_OVERLOAD 52
|
|
|
-#define DHO_DHCP_MESSAGE_TYPE 53
|
|
|
-#define DHO_DHCP_SERVER_IDENTIFIER 54
|
|
|
-#define DHO_DHCP_PARAMETER_REQUEST_LIST 55
|
|
|
-#define DHO_DHCP_MESSAGE 56
|
|
|
-#define DHO_DHCP_MAX_MESSAGE_SIZE 57
|
|
|
-#define DHO_DHCP_RENEWAL_TIME 58
|
|
|
-#define DHO_DHCP_REBINDING_TIME 59
|
|
|
-#define DHO_VENDOR_CLASS_IDENTIFIER 60
|
|
|
-#define DHO_DHCP_CLIENT_IDENTIFIER 61
|
|
|
-#define DHO_NWIP_DOMAIN_NAME 62
|
|
|
-#define DHO_NWIP_SUBOPTIONS 63
|
|
|
-#define DHO_USER_CLASS 77
|
|
|
-#define DHO_FQDN 81
|
|
|
-#define DHO_DHCP_AGENT_OPTIONS 82
|
|
|
-#define DHO_AUTHENTICATE 90 /* RFC3118, was 210 */
|
|
|
-#define DHO_CLIENT_LAST_TRANSACTION_TIME 91
|
|
|
-#define DHO_ASSOCIATED_IP 92
|
|
|
-#define DHO_SUBNET_SELECTION 118 /* RFC3011! */
|
|
|
-#define DHO_DOMAIN_SEARCH 119 /* RFC3397 */
|
|
|
-#define DHO_VIVCO_SUBOPTIONS 124
|
|
|
-#define DHO_VIVSO_SUBOPTIONS 125
|
|
|
-
|
|
|
-#define DHO_END 255
|
|
|
+ enum DHCPOptionType {
|
|
|
+ DHO_PAD = 0,
|
|
|
+ DHO_SUBNET_MASK = 1,
|
|
|
+ DHO_TIME_OFFSET = 2,
|
|
|
+ DHO_ROUTERS = 3,
|
|
|
+ DHO_TIME_SERVERS = 4,
|
|
|
+ DHO_NAME_SERVERS = 5,
|
|
|
+ DHO_DOMAIN_NAME_SERVERS = 6,
|
|
|
+ DHO_LOG_SERVERS = 7,
|
|
|
+ DHO_COOKIE_SERVERS = 8,
|
|
|
+ DHO_LPR_SERVERS = 9,
|
|
|
+ DHO_IMPRESS_SERVERS = 10,
|
|
|
+ DHO_RESOURCE_LOCATION_SERVERS = 11,
|
|
|
+ DHO_HOST_NAME = 12,
|
|
|
+ DHO_BOOT_SIZE = 13,
|
|
|
+ DHO_MERIT_DUMP = 14,
|
|
|
+ DHO_DOMAIN_NAME = 15,
|
|
|
+ DHO_SWAP_SERVER = 16,
|
|
|
+ DHO_ROOT_PATH = 17,
|
|
|
+ DHO_EXTENSIONS_PATH = 18,
|
|
|
+ DHO_IP_FORWARDING = 19,
|
|
|
+ DHO_NON_LOCAL_SOURCE_ROUTING = 20,
|
|
|
+ DHO_POLICY_FILTER = 21,
|
|
|
+ DHO_MAX_DGRAM_REASSEMBLY = 22,
|
|
|
+ DHO_DEFAULT_IP_TTL = 23,
|
|
|
+ DHO_PATH_MTU_AGING_TIMEOUT = 24,
|
|
|
+ DHO_PATH_MTU_PLATEAU_TABLE = 25,
|
|
|
+ DHO_INTERFACE_MTU = 26,
|
|
|
+ DHO_ALL_SUBNETS_LOCAL = 27,
|
|
|
+ DHO_BROADCAST_ADDRESS = 28,
|
|
|
+ DHO_PERFORM_MASK_DISCOVERY = 29,
|
|
|
+ DHO_MASK_SUPPLIER = 30,
|
|
|
+ DHO_ROUTER_DISCOVERY = 31,
|
|
|
+ DHO_ROUTER_SOLICITATION_ADDRESS = 32,
|
|
|
+ DHO_STATIC_ROUTES = 33,
|
|
|
+ DHO_TRAILER_ENCAPSULATION = 34,
|
|
|
+ DHO_ARP_CACHE_TIMEOUT = 35,
|
|
|
+ DHO_IEEE802_3_ENCAPSULATION = 36,
|
|
|
+ DHO_DEFAULT_TCP_TTL = 37,
|
|
|
+ DHO_TCP_KEEPALIVE_INTERVAL = 38,
|
|
|
+ DHO_TCP_KEEPALIVE_GARBAGE = 39,
|
|
|
+ DHO_NIS_DOMAIN = 40,
|
|
|
+ DHO_NIS_SERVERS = 41,
|
|
|
+ DHO_NTP_SERVERS = 42,
|
|
|
+ DHO_VENDOR_ENCAPSULATED_OPTIONS = 43,
|
|
|
+ DHO_NETBIOS_NAME_SERVERS = 44,
|
|
|
+ DHO_NETBIOS_DD_SERVER = 45,
|
|
|
+ DHO_NETBIOS_NODE_TYPE = 46,
|
|
|
+ DHO_NETBIOS_SCOPE = 47,
|
|
|
+ DHO_FONT_SERVERS = 48,
|
|
|
+ DHO_X_DISPLAY_MANAGER = 49,
|
|
|
+ DHO_DHCP_REQUESTED_ADDRESS = 50,
|
|
|
+ DHO_DHCP_LEASE_TIME = 51,
|
|
|
+ DHO_DHCP_OPTION_OVERLOAD = 52,
|
|
|
+ DHO_DHCP_MESSAGE_TYPE = 53,
|
|
|
+ DHO_DHCP_SERVER_IDENTIFIER = 54,
|
|
|
+ DHO_DHCP_PARAMETER_REQUEST_LIST = 55,
|
|
|
+ DHO_DHCP_MESSAGE = 56,
|
|
|
+ DHO_DHCP_MAX_MESSAGE_SIZE = 57,
|
|
|
+ DHO_DHCP_RENEWAL_TIME = 58,
|
|
|
+ DHO_DHCP_REBINDING_TIME = 59,
|
|
|
+ DHO_VENDOR_CLASS_IDENTIFIER = 60,
|
|
|
+ DHO_DHCP_CLIENT_IDENTIFIER = 61,
|
|
|
+ DHO_NWIP_DOMAIN_NAME = 62,
|
|
|
+ DHO_NWIP_SUBOPTIONS = 63,
|
|
|
+ DHO_USER_CLASS = 77,
|
|
|
+ DHO_FQDN = 81,
|
|
|
+ DHO_DHCP_AGENT_OPTIONS = 82,
|
|
|
+ DHO_AUTHENTICATE = 90, /* RFC3118, was 210 */
|
|
|
+ DHO_CLIENT_LAST_TRANSACTION_TIME = 91,
|
|
|
+ DHO_ASSOCIATED_IP = 92,
|
|
|
+ DHO_SUBNET_SELECTION = 118, /* RFC3011! */
|
|
|
+ DHO_DOMAIN_SEARCH = 119, /* RFC3397 */
|
|
|
+ DHO_VIVCO_SUBOPTIONS = 124,
|
|
|
+ DHO_VIVSO_SUBOPTIONS = 125,
|
|
|
+
|
|
|
+ DHO_END = 255
|
|
|
+ };
|
|
|
|
|
|
/* DHCP message types. */
|
|
|
-#define DHCPDISCOVER 1
|
|
|
-#define DHCPOFFER 2
|
|
|
-#define DHCPREQUEST 3
|
|
|
-#define DHCPDECLINE 4
|
|
|
-#define DHCPACK 5
|
|
|
-#define DHCPNAK 6
|
|
|
-#define DHCPRELEASE 7
|
|
|
-#define DHCPINFORM 8
|
|
|
-#define DHCPLEASEQUERY 10
|
|
|
-#define DHCPLEASEUNASSIGNED 11
|
|
|
-#define DHCPLEASEUNKNOWN 12
|
|
|
-#define DHCPLEASEACTIVE 13
|
|
|
-
|
|
|
+ enum DHCPMessageType {
|
|
|
+ DHCPDISCOVER = 1,
|
|
|
+ DHCPOFFER = 2,
|
|
|
+ DHCPREQUEST = 3,
|
|
|
+ DHCPDECLINE = 4,
|
|
|
+ DHCPACK = 5,
|
|
|
+ DHCPNAK = 6,
|
|
|
+ DHCPRELEASE = 7,
|
|
|
+ DHCPINFORM = 8,
|
|
|
+ DHCPLEASEQUERY = 10,
|
|
|
+ DHCPLEASEUNASSIGNED = 11,
|
|
|
+ DHCPLEASEUNKNOWN = 12,
|
|
|
+ DHCPLEASEACTIVE = 13
|
|
|
+ };
|
|
|
|
|
|
/* Relay Agent Information option subtypes: */
|
|
|
-#define RAI_CIRCUIT_ID 1
|
|
|
-#define RAI_REMOTE_ID 2
|
|
|
-#define RAI_AGENT_ID 3
|
|
|
-#define RAI_LINK_SELECT 5
|
|
|
+#define RAI_CIRCUIT_ID 1
|
|
|
+#define RAI_REMOTE_ID 2
|
|
|
+#define RAI_AGENT_ID 3
|
|
|
+#define RAI_LINK_SELECT 5
|
|
|
|
|
|
/* FQDN suboptions: */
|
|
|
-#define FQDN_NO_CLIENT_UPDATE 1
|
|
|
-#define FQDN_SERVER_UPDATE 2
|
|
|
-#define FQDN_ENCODED 3
|
|
|
-#define FQDN_RCODE1 4
|
|
|
-#define FQDN_RCODE2 5
|
|
|
-#define FQDN_HOSTNAME 6
|
|
|
-#define FQDN_DOMAINNAME 7
|
|
|
-#define FQDN_FQDN 8
|
|
|
-#define FQDN_SUBOPTION_COUNT 8
|
|
|
+#define FQDN_NO_CLIENT_UPDATE 1
|
|
|
+#define FQDN_SERVER_UPDATE 2
|
|
|
+#define FQDN_ENCODED 3
|
|
|
+#define FQDN_RCODE1 4
|
|
|
+#define FQDN_RCODE2 5
|
|
|
+#define FQDN_HOSTNAME 6
|
|
|
+#define FQDN_DOMAINNAME 7
|
|
|
+#define FQDN_FQDN 8
|
|
|
+#define FQDN_SUBOPTION_COUNT 8
|
|
|
|
|
|
/* Enterprise Suboptions: */
|
|
|
-#define VENDOR_ISC_SUBOPTIONS 2495
|
|
|
+#define VENDOR_ISC_SUBOPTIONS 2495
|
|
|
|
|
|
-#define DHCP4_CLIENT_PORT 68
|
|
|
-#define DHCP4_SERVER_PORT 67
|
|
|
+ static const uint16_t DHCP4_CLIENT_PORT = 68;
|
|
|
+ static const uint16_t DHCP4_SERVER_PORT = 67;
|
|
|
|
|
|
+} // end of isc::dhcp namespace
|
|
|
+} // end of isc namespace
|
|
|
|
|
|
#endif /* DHCP_H */
|
|
|
-
|