123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- /* dhcp.h
- Protocol structures... */
- /*
- * Copyright (c) 2004-2009 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''.
- */
- #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
- #define DHCP_MAX_OPTION_LEN (DHCP_MTU_MAX - DHCP_FIXED_LEN)
- #define DHCP_MIN_OPTION_LEN (DHCP_MTU_MIN - DHCP_FIXED_LEN)
- struct dhcp_packet {
- u_int8_t op; /* 0: Message opcode/type */
- u_int8_t htype; /* 1: Hardware addr type (net/if_types.h) */
- u_int8_t hlen; /* 2: Hardware addr length */
- u_int8_t hops; /* 3: Number of relay agent hops from client */
- u_int32_t xid; /* 4: Transaction ID */
- u_int16_t secs; /* 8: Seconds since client started looking */
- u_int16_t flags; /* 10: Flag bits */
- struct in_addr ciaddr; /* 12: Client IP address (if already in use) */
- struct in_addr yiaddr; /* 16: Client IP address */
- struct in_addr siaddr; /* 18: IP address of next server to talk to */
- struct in_addr giaddr; /* 20: DHCP relay agent IP address */
- unsigned char chaddr [16]; /* 24: Client hardware address */
- char sname [DHCP_SNAME_LEN]; /* 40: Server name */
- char file [DHCP_FILE_LEN]; /* 104: Boot filename */
- unsigned char options [DHCP_MAX_OPTION_LEN];
- /* 212: Optional parameters
- (actual length dependent on MTU). */
- };
- /* BOOTP (rfc951) message types */
- #define BOOTREQUEST 1
- #define BOOTREPLY 2
- /* Possible values for flags field... */
- #define 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... */
- /* Magic cookie validating dhcp options field (and bootp vendor
- extensions field). */
- #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
- /* 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
- /* 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
- /* 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 /* DHCP_H */
|