Changes for kernel and Busybox
[tomato.git] / release / src / router / dnsmasq / src / dhcp_protocol.h
blobe09cad811785989a2d9cc6933fe62decc7392d7c
1 /* dnsmasq is Copyright (c) 2000-2011 Simon Kelley
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; version 2 dated June, 1991, or
6 (at your option) version 3 dated 29 June, 2007.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
13 You should have received a copy of the GNU General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #define BOOTREQUEST 1
18 #define BOOTREPLY 2
19 #define DHCP_COOKIE 0x63825363
21 /* The Linux in-kernel DHCP client silently ignores any packet
22 smaller than this. Sigh........... */
23 #define MIN_PACKETSZ 300
25 #define OPTION_PAD 0
26 #define OPTION_NETMASK 1
27 #define OPTION_ROUTER 3
28 #define OPTION_DNSSERVER 6
29 #define OPTION_HOSTNAME 12
30 #define OPTION_DOMAINNAME 15
31 #define OPTION_BROADCAST 28
32 #define OPTION_VENDOR_CLASS_OPT 43
33 #define OPTION_REQUESTED_IP 50
34 #define OPTION_LEASE_TIME 51
35 #define OPTION_OVERLOAD 52
36 #define OPTION_MESSAGE_TYPE 53
37 #define OPTION_SERVER_IDENTIFIER 54
38 #define OPTION_REQUESTED_OPTIONS 55
39 #define OPTION_MESSAGE 56
40 #define OPTION_MAXMESSAGE 57
41 #define OPTION_T1 58
42 #define OPTION_T2 59
43 #define OPTION_VENDOR_ID 60
44 #define OPTION_CLIENT_ID 61
45 #define OPTION_SNAME 66
46 #define OPTION_FILENAME 67
47 #define OPTION_USER_CLASS 77
48 #define OPTION_CLIENT_FQDN 81
49 #define OPTION_AGENT_ID 82
50 #define OPTION_ARCH 93
51 #define OPTION_PXE_UUID 97
52 #define OPTION_SUBNET_SELECT 118
53 #define OPTION_DOMAIN_SEARCH 119
54 #define OPTION_SIP_SERVER 120
55 #define OPTION_VENDOR_IDENT 124
56 #define OPTION_VENDOR_IDENT_OPT 125
57 #define OPTION_END 255
59 #define SUBOPT_CIRCUIT_ID 1
60 #define SUBOPT_REMOTE_ID 2
61 #define SUBOPT_SUBNET_SELECT 5 /* RFC 3527 */
62 #define SUBOPT_SUBSCR_ID 6 /* RFC 3393 */
63 #define SUBOPT_SERVER_OR 11 /* RFC 5107 */
65 #define SUBOPT_PXE_BOOT_ITEM 71 /* PXE standard */
66 #define SUBOPT_PXE_DISCOVERY 6
67 #define SUBOPT_PXE_SERVERS 8
68 #define SUBOPT_PXE_MENU 9
69 #define SUBOPT_PXE_MENU_PROMPT 10
71 #define DHCPDISCOVER 1
72 #define DHCPOFFER 2
73 #define DHCPREQUEST 3
74 #define DHCPDECLINE 4
75 #define DHCPACK 5
76 #define DHCPNAK 6
77 #define DHCPRELEASE 7
78 #define DHCPINFORM 8
80 #define BRDBAND_FORUM_IANA 3561 /* Broadband forum IANA enterprise */
82 #define DHCP_CHADDR_MAX 16
84 struct dhcp_packet {
85 u8 op, htype, hlen, hops;
86 u32 xid;
87 u16 secs, flags;
88 struct in_addr ciaddr, yiaddr, siaddr, giaddr;
89 u8 chaddr[DHCP_CHADDR_MAX], sname[64], file[128];
90 u8 options[312];