~ubuntu-branches/ubuntu/oneiric/isc-dhcp/oneiric-security

« back to all changes in this revision

Viewing changes to includes/dhcp.h

  • Committer: Bazaar Package Importer
  • Author(s): Andrew Pollock
  • Date: 2009-09-02 22:34:25 UTC
  • Revision ID: james.westby@ubuntu.com-20090902223425-nypo7bkftxffq41m
Tags: upstream-4.1.0
ImportĀ upstreamĀ versionĀ 4.1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* dhcp.h
 
2
 
 
3
   Protocol structures... */
 
4
 
 
5
/*
 
6
 * Copyright (c) 2004-2008 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
 *   http://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 ``http://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