Annotation of embedaddon/dhcp/includes/dhcp.h, revision 1.1
1.1 ! misho 1: /* dhcp.h
! 2:
! 3: Protocol structures... */
! 4:
! 5: /*
! 6: * Copyright (c) 2004-2009 by Internet Systems Consortium, Inc. ("ISC")
! 7: * Copyright (c) 1995-2003 by Internet Software Consortium
! 8: *
! 9: * Permission to use, copy, modify, and distribute this software for any
! 10: * purpose with or without fee is hereby granted, provided that the above
! 11: * copyright notice and this permission notice appear in all copies.
! 12: *
! 13: * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
! 14: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 15: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
! 16: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 17: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 18: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
! 19: * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 20: *
! 21: * Internet Systems Consortium, Inc.
! 22: * 950 Charter Street
! 23: * Redwood City, CA 94063
! 24: * <info@isc.org>
! 25: * https://www.isc.org/
! 26: *
! 27: * This software has been written for Internet Systems Consortium
! 28: * by Ted Lemon in cooperation with Vixie Enterprises. To learn more
! 29: * about Internet Systems Consortium, see ``https://www.isc.org''.
! 30: * To learn more about Vixie Enterprises, see ``http://www.vix.com''.
! 31: */
! 32:
! 33: #ifndef DHCP_H
! 34: #define DHCP_H
! 35:
! 36: #define DHCP_UDP_OVERHEAD (20 + /* IP header */ \
! 37: 8) /* UDP header */
! 38: #define DHCP_SNAME_LEN 64
! 39: #define DHCP_FILE_LEN 128
! 40: #define DHCP_FIXED_NON_UDP 236
! 41: #define DHCP_FIXED_LEN (DHCP_FIXED_NON_UDP + DHCP_UDP_OVERHEAD)
! 42: /* Everything but options. */
! 43: #define BOOTP_MIN_LEN 300
! 44:
! 45: #define DHCP_MTU_MAX 1500
! 46: #define DHCP_MTU_MIN 576
! 47:
! 48: #define DHCP_MAX_OPTION_LEN (DHCP_MTU_MAX - DHCP_FIXED_LEN)
! 49: #define DHCP_MIN_OPTION_LEN (DHCP_MTU_MIN - DHCP_FIXED_LEN)
! 50:
! 51: struct dhcp_packet {
! 52: u_int8_t op; /* 0: Message opcode/type */
! 53: u_int8_t htype; /* 1: Hardware addr type (net/if_types.h) */
! 54: u_int8_t hlen; /* 2: Hardware addr length */
! 55: u_int8_t hops; /* 3: Number of relay agent hops from client */
! 56: u_int32_t xid; /* 4: Transaction ID */
! 57: u_int16_t secs; /* 8: Seconds since client started looking */
! 58: u_int16_t flags; /* 10: Flag bits */
! 59: struct in_addr ciaddr; /* 12: Client IP address (if already in use) */
! 60: struct in_addr yiaddr; /* 16: Client IP address */
! 61: struct in_addr siaddr; /* 18: IP address of next server to talk to */
! 62: struct in_addr giaddr; /* 20: DHCP relay agent IP address */
! 63: unsigned char chaddr [16]; /* 24: Client hardware address */
! 64: char sname [DHCP_SNAME_LEN]; /* 40: Server name */
! 65: char file [DHCP_FILE_LEN]; /* 104: Boot filename */
! 66: unsigned char options [DHCP_MAX_OPTION_LEN];
! 67: /* 212: Optional parameters
! 68: (actual length dependent on MTU). */
! 69: };
! 70:
! 71: /* BOOTP (rfc951) message types */
! 72: #define BOOTREQUEST 1
! 73: #define BOOTREPLY 2
! 74:
! 75: /* Possible values for flags field... */
! 76: #define BOOTP_BROADCAST 32768L
! 77:
! 78: /* Possible values for hardware type (htype) field... */
! 79: #define HTYPE_ETHER 1 /* Ethernet 10Mbps */
! 80: #define HTYPE_IEEE802 6 /* IEEE 802.2 Token Ring... */
! 81: #define HTYPE_FDDI 8 /* FDDI... */
! 82:
! 83: /* Magic cookie validating dhcp options field (and bootp vendor
! 84: extensions field). */
! 85: #define DHCP_OPTIONS_COOKIE "\143\202\123\143"
! 86:
! 87: /* DHCP Option codes: */
! 88:
! 89: #define DHO_PAD 0
! 90: #define DHO_SUBNET_MASK 1
! 91: #define DHO_TIME_OFFSET 2
! 92: #define DHO_ROUTERS 3
! 93: #define DHO_TIME_SERVERS 4
! 94: #define DHO_NAME_SERVERS 5
! 95: #define DHO_DOMAIN_NAME_SERVERS 6
! 96: #define DHO_LOG_SERVERS 7
! 97: #define DHO_COOKIE_SERVERS 8
! 98: #define DHO_LPR_SERVERS 9
! 99: #define DHO_IMPRESS_SERVERS 10
! 100: #define DHO_RESOURCE_LOCATION_SERVERS 11
! 101: #define DHO_HOST_NAME 12
! 102: #define DHO_BOOT_SIZE 13
! 103: #define DHO_MERIT_DUMP 14
! 104: #define DHO_DOMAIN_NAME 15
! 105: #define DHO_SWAP_SERVER 16
! 106: #define DHO_ROOT_PATH 17
! 107: #define DHO_EXTENSIONS_PATH 18
! 108: #define DHO_IP_FORWARDING 19
! 109: #define DHO_NON_LOCAL_SOURCE_ROUTING 20
! 110: #define DHO_POLICY_FILTER 21
! 111: #define DHO_MAX_DGRAM_REASSEMBLY 22
! 112: #define DHO_DEFAULT_IP_TTL 23
! 113: #define DHO_PATH_MTU_AGING_TIMEOUT 24
! 114: #define DHO_PATH_MTU_PLATEAU_TABLE 25
! 115: #define DHO_INTERFACE_MTU 26
! 116: #define DHO_ALL_SUBNETS_LOCAL 27
! 117: #define DHO_BROADCAST_ADDRESS 28
! 118: #define DHO_PERFORM_MASK_DISCOVERY 29
! 119: #define DHO_MASK_SUPPLIER 30
! 120: #define DHO_ROUTER_DISCOVERY 31
! 121: #define DHO_ROUTER_SOLICITATION_ADDRESS 32
! 122: #define DHO_STATIC_ROUTES 33
! 123: #define DHO_TRAILER_ENCAPSULATION 34
! 124: #define DHO_ARP_CACHE_TIMEOUT 35
! 125: #define DHO_IEEE802_3_ENCAPSULATION 36
! 126: #define DHO_DEFAULT_TCP_TTL 37
! 127: #define DHO_TCP_KEEPALIVE_INTERVAL 38
! 128: #define DHO_TCP_KEEPALIVE_GARBAGE 39
! 129: #define DHO_NIS_DOMAIN 40
! 130: #define DHO_NIS_SERVERS 41
! 131: #define DHO_NTP_SERVERS 42
! 132: #define DHO_VENDOR_ENCAPSULATED_OPTIONS 43
! 133: #define DHO_NETBIOS_NAME_SERVERS 44
! 134: #define DHO_NETBIOS_DD_SERVER 45
! 135: #define DHO_NETBIOS_NODE_TYPE 46
! 136: #define DHO_NETBIOS_SCOPE 47
! 137: #define DHO_FONT_SERVERS 48
! 138: #define DHO_X_DISPLAY_MANAGER 49
! 139: #define DHO_DHCP_REQUESTED_ADDRESS 50
! 140: #define DHO_DHCP_LEASE_TIME 51
! 141: #define DHO_DHCP_OPTION_OVERLOAD 52
! 142: #define DHO_DHCP_MESSAGE_TYPE 53
! 143: #define DHO_DHCP_SERVER_IDENTIFIER 54
! 144: #define DHO_DHCP_PARAMETER_REQUEST_LIST 55
! 145: #define DHO_DHCP_MESSAGE 56
! 146: #define DHO_DHCP_MAX_MESSAGE_SIZE 57
! 147: #define DHO_DHCP_RENEWAL_TIME 58
! 148: #define DHO_DHCP_REBINDING_TIME 59
! 149: #define DHO_VENDOR_CLASS_IDENTIFIER 60
! 150: #define DHO_DHCP_CLIENT_IDENTIFIER 61
! 151: #define DHO_NWIP_DOMAIN_NAME 62
! 152: #define DHO_NWIP_SUBOPTIONS 63
! 153: #define DHO_USER_CLASS 77
! 154: #define DHO_FQDN 81
! 155: #define DHO_DHCP_AGENT_OPTIONS 82
! 156: #define DHO_AUTHENTICATE 90 /* RFC3118, was 210 */
! 157: #define DHO_CLIENT_LAST_TRANSACTION_TIME 91
! 158: #define DHO_ASSOCIATED_IP 92
! 159: #define DHO_SUBNET_SELECTION 118 /* RFC3011! */
! 160: #define DHO_DOMAIN_SEARCH 119 /* RFC3397 */
! 161: #define DHO_VIVCO_SUBOPTIONS 124
! 162: #define DHO_VIVSO_SUBOPTIONS 125
! 163:
! 164: #define DHO_END 255
! 165:
! 166: /* DHCP message types. */
! 167: #define DHCPDISCOVER 1
! 168: #define DHCPOFFER 2
! 169: #define DHCPREQUEST 3
! 170: #define DHCPDECLINE 4
! 171: #define DHCPACK 5
! 172: #define DHCPNAK 6
! 173: #define DHCPRELEASE 7
! 174: #define DHCPINFORM 8
! 175: #define DHCPLEASEQUERY 10
! 176: #define DHCPLEASEUNASSIGNED 11
! 177: #define DHCPLEASEUNKNOWN 12
! 178: #define DHCPLEASEACTIVE 13
! 179:
! 180:
! 181: /* Relay Agent Information option subtypes: */
! 182: #define RAI_CIRCUIT_ID 1
! 183: #define RAI_REMOTE_ID 2
! 184: #define RAI_AGENT_ID 3
! 185: #define RAI_LINK_SELECT 5
! 186:
! 187: /* FQDN suboptions: */
! 188: #define FQDN_NO_CLIENT_UPDATE 1
! 189: #define FQDN_SERVER_UPDATE 2
! 190: #define FQDN_ENCODED 3
! 191: #define FQDN_RCODE1 4
! 192: #define FQDN_RCODE2 5
! 193: #define FQDN_HOSTNAME 6
! 194: #define FQDN_DOMAINNAME 7
! 195: #define FQDN_FQDN 8
! 196: #define FQDN_SUBOPTION_COUNT 8
! 197:
! 198: /* Enterprise Suboptions: */
! 199: #define VENDOR_ISC_SUBOPTIONS 2495
! 200:
! 201: #endif /* DHCP_H */
! 202:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>