123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- /*
- * Copyright (c) 2004-2011, 2014-2015 by Internet Systems Consortium, Inc. ("ISC")
- * Copyright (c) 1995-2003 by Internet Software Consortium
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Internet Systems Consortium, Inc.
- * 950 Charter Street
- * Redwood City, CA 94063
- * <info@isc.org>
- * https://www.isc.org/
- *
- * This software has been written for Internet Systems Consortium
- * by Ted Lemon in cooperation with Vixie Enterprises. To learn more
- * about Internet Systems Consortium, see ``https://www.isc.org''.
- * 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.
- */
- #ifndef DHCP_H
- #define DHCP_H
- #include <stdint.h>
- /// @note Code points in comments are those assigned by IANA
- /// but not yet implemented in Kea.
- /// To implement a standard option, remove the comment characters,
- /// add an entry in std_option_defs.h, add a stdOptionDefs4 unit test
- /// in tests/libdhcp++_unittest.cc and update dhcp4-std-options-list-part2
- /// in the dhcp4-srv.xml source file of the user guide.
- namespace isc {
- namespace dhcp {
- /* IPv4 Broadcast address */
- #define DHCP_IPV4_BROADCAST_ADDRESS "255.255.255.255"
- /* BOOTP (rfc951) message types */
- enum BOOTPTypes {
- BOOTREQUEST = 1,
- BOOTREPLY = 2
- };
- /* Possible values for flags field... */
- static const uint16_t BOOTP_BROADCAST = 32768L;
- /* Possible values for hardware type (htype) field... */
- enum HType {
- HTYPE_ETHER = 1, /* Ethernet 10Mbps */
- HTYPE_DOCSIS = 1, /* 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. */
- HTYPE_IEEE802 = 6, /* IEEE 802.2 Token Ring */
- HTYPE_FDDI = 8 /* FDDI */
- /// TODO Add infiniband here
- };
- /* DHCP Option codes: */
- 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_NIS_DOMAIN_NAME = 64,
- // DHO_NIS_SERVER_ADDR = 65,
- DHO_TFTP_SERVER_NAME = 66,
- DHO_BOOT_FILE_NAME = 67,
- // DHO_HOME_AGENT_ADDRS = 68,
- // DHO_SMTP_SERVER = 69,
- // DHO_POP3_SERVER = 70,
- // DHO_NNTP_SERVER = 71,
- // DHO_WWW_SERVER = 72,
- // DHO_FINGER_SERVER = 73,
- // DHO_IRC_SERVER = 74,
- // DHO_STREETTALK_SERVER = 75,
- // DHO_STDASERVER = 76,
- DHO_USER_CLASS = 77,
- // DHO_DIRECTORY_AGENT = 78,
- // DHO_SERVICE_SCOPE = 79,
- // DHO_RAPID_COMMIT = 80,,
- DHO_FQDN = 81,
- DHO_DHCP_AGENT_OPTIONS = 82,
- // DHO_ISNS = 83,
- // 84 is removed/unassigned
- // DHO_NDS_SERVERS = 85,
- // DHO_NDS_TREE_NAME = 86,
- // DHO_NDS_CONTEXT = 87,
- // DHO_BCMCS_DOMAIN_NAME_LIST = 88,
- // DHO_BCMCS_IPV4_ADDR = 89,
- DHO_AUTHENTICATE = 90, /* RFC3118, was 210 */
- DHO_CLIENT_LAST_TRANSACTION_TIME = 91,
- DHO_ASSOCIATED_IP = 92,
- DHO_SYSTEM = 93, /* RFC4578 */
- DHO_NDI = 94, /* RFC4578 */
- // DHO_LDAP = 95,
- // 96 is removed/unassigned
- DHO_UUID_GUID = 97, /* RFC4578 */
- // DHO_USER_AUTH = 98,
- // DHO_GEOCONF_CIVIC = 99,
- // DHO_PCODE = 100,
- // DHO_TCODE = 101,
- // 102-111 are removed/unassigned
- // DHO_NETINFO_ADDR = 112,
- // DHO_NETINFO_TAG = 113,
- // DHO_URL = 114,
- // 115 is removed/unassigned
- // DHO_AUTO_CONFIG = 116,
- // DHO_NAME_SERVICE_SEARCH = 117,
- DHO_SUBNET_SELECTION = 118, /* RFC3011! */
- DHO_DOMAIN_SEARCH = 119, /* RFC3397 */
- // DHO_SIP_SERVERS = 120,
- // DHO_CLASSLESS_STATIC_ROUTE = 121,
- // DHO_CCC = 122,
- // DHO_GEOCONF = 123,
- DHO_VIVCO_SUBOPTIONS = 124,
- DHO_VIVSO_SUBOPTIONS = 125,
- // 126-127 are removed/unassigned
- // 128-135 have multiple definitions including PXE
- // DHO_PANA_AGENT = 136,
- // DHO_V4_LOST = 137,
- // DHO_CAPWAP_AC_V4 = 138,
- // DHO_IPV4_ADDR_MOS = 139,
- // DHO_IPV4_FQDN_MOS = 140,
- // DHO_SIP_UA_CONF_SERVICE_DOMAINS = 141,
- // DHO_IPV4_ADDR_ANDSF = 142,
- // 143 is removed/unassigned
- // DHO_GEOLOC = 144,
- // DHO_FORCERENEW_NONCE_CAPABLE = 145,
- // DHO_RDNSS_SELECT = 146,
- // 147-149 are removed/unassigned
- // 150 have multiple definitions
- // DHO_STATUS_CODE = 151,
- // DHO_BASE_TIME = 152,
- // DHO_START_TIME_OF_STATE = 153,
- // DHO_QUERY_START_TIME = 154,
- // DHO_QUERY_END_TIME = 155,
- // DHO_DHCP_STATE = 156,
- // DHO_DATA_SOURCE = 157,
- // DHO_V4_PCP_SERVER = 158,
- // DHO_V4_PORTPARAMS = 159,
- // 160-211 are removed/unassigned
- // DHO_6RD = 212,
- // DHO_V4_ACCESS_DOMAIN = 213,
- // 214-219 are removed/unassigned
- // DHO_SUBNET_ALLOC = 220,
- // DHO_VSS = 221,
- // 222-223 are removed/unassigned
- // 224-254 are reserved for private use
- DHO_END = 255
- };
- /* DHCP message types. */
- enum DHCPMessageType {
- DHCPDISCOVER = 1,
- DHCPOFFER = 2,
- DHCPREQUEST = 3,
- DHCPDECLINE = 4,
- DHCPACK = 5,
- DHCPNAK = 6,
- DHCPRELEASE = 7,
- DHCPINFORM = 8,
- // DHCPFORCERENEW = 9,
- DHCPLEASEQUERY = 10,
- DHCPLEASEUNASSIGNED = 11,
- DHCPLEASEUNKNOWN = 12,
- DHCPLEASEACTIVE = 13,
- DHCPBULKLEASEQUERY = 14,
- DHCPLEASEQUERYDONE = 15
- };
- static const uint16_t DHCP4_CLIENT_PORT = 68;
- static const uint16_t DHCP4_SERVER_PORT = 67;
- /// Magic cookie validating dhcp options field (and bootp vendor
- /// extensions field).
- static const uint32_t DHCP_OPTIONS_COOKIE = 0x63825363;
- /* Relay Agent Information option subtypes: */
- static const uint16_t RAI_OPTION_AGENT_CIRCUIT_ID = 1; // RFC3046
- static const uint16_t RAI_OPTION_REMOTE_ID = 2; // RFC3046
- /* option 3 is reserved and will never be assigned */
- static const uint16_t RAI_OPTION_DOCSIS_DEVICE_CLASS = 4; // RFC3256
- static const uint16_t RAI_OPTION_LINK_SELECTION = 5; // RFC3527
- static const uint16_t RAI_OPTION_SUBSCRIBER_ID = 6; //RFC3993
- static const uint16_t RAI_OPTION_RADIUS = 7; //RFC4014
- static const uint16_t RAI_OPTION_AUTH = 8; //RFC4030
- static const uint16_t RAI_OPTION_VSI = 9; // RFC4243
- static const uint16_t RAI_OPTION_RELAY_FLAGS = 10; // RFC5010
- static const uint16_t RAI_OPTION_SERVER_ID_OVERRIDE = 11; // RFC5107
- static const uint16_t RAI_OPTION_RELAY_ID = 12; //RFC6925
- static const uint16_t RAI_OPTION_VIRTUAL_SUBNET_SELECT = 151; //RFC6607
- static const uint16_t RAI_OPTION_VIRTUAL_SUBNET_SELECT_CTRL = 152; //RFC6607
- // TODO: Following are leftovers from dhcp.h import from ISC DHCP
- // They will be converted to C++-style defines once they will start
- // to be used.
- #if 0
- /* 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
- /* Enterprise Suboptions: */
- #define VENDOR_ISC_SUBOPTIONS 2495
- #endif
- } // end of isc::dhcp namespace
- } // end of isc namespace
- #endif /* DHCP_H */
|