source: MondoRescue/branches/3.2/mindi-busybox/networking/udhcp/options.h@ 3232

Last change on this file since 3232 was 1765, checked in by Bruno Cornec, 16 years ago

Update to busybox 1.7.2

File size: 2.8 KB
Line 
1/* vi: set sw=4 ts=4: */
2/* options.h */
3#ifndef _OPTIONS_H
4#define _OPTIONS_H
5
6#define TYPE_MASK 0x0F
7
8enum {
9 OPTION_IP=1,
10 OPTION_IP_PAIR,
11 OPTION_STRING,
12#if ENABLE_FEATURE_RFC3397
13 OPTION_STR1035, /* RFC1035 compressed domain name list */
14#endif
15 OPTION_BOOLEAN,
16 OPTION_U8,
17 OPTION_U16,
18 OPTION_S16,
19 OPTION_U32,
20 OPTION_S32
21};
22
23#define OPTION_REQ 0x10 /* have the client request this option */
24#define OPTION_LIST 0x20 /* There can be a list of 1 or more of these */
25
26/*****************************************************************/
27/* Do not modify below here unless you know what you are doing!! */
28/*****************************************************************/
29
30/* DHCP protocol -- see RFC 2131 */
31#define SERVER_PORT 67
32#define CLIENT_PORT 68
33
34#define DHCP_MAGIC 0x63825363
35
36/* DHCP option codes (partial list) */
37#define DHCP_PADDING 0x00
38#define DHCP_SUBNET 0x01
39#define DHCP_TIME_OFFSET 0x02
40#define DHCP_ROUTER 0x03
41#define DHCP_TIME_SERVER 0x04
42#define DHCP_NAME_SERVER 0x05
43#define DHCP_DNS_SERVER 0x06
44#define DHCP_LOG_SERVER 0x07
45#define DHCP_COOKIE_SERVER 0x08
46#define DHCP_LPR_SERVER 0x09
47#define DHCP_HOST_NAME 0x0c
48#define DHCP_BOOT_SIZE 0x0d
49#define DHCP_DOMAIN_NAME 0x0f
50#define DHCP_SWAP_SERVER 0x10
51#define DHCP_ROOT_PATH 0x11
52#define DHCP_IP_TTL 0x17
53#define DHCP_MTU 0x1a
54#define DHCP_BROADCAST 0x1c
55#define DHCP_NTP_SERVER 0x2a
56#define DHCP_WINS_SERVER 0x2c
57#define DHCP_REQUESTED_IP 0x32
58#define DHCP_LEASE_TIME 0x33
59#define DHCP_OPTION_OVER 0x34
60#define DHCP_MESSAGE_TYPE 0x35
61#define DHCP_SERVER_ID 0x36
62#define DHCP_PARAM_REQ 0x37
63#define DHCP_MESSAGE 0x38
64#define DHCP_MAX_SIZE 0x39
65#define DHCP_T1 0x3a
66#define DHCP_T2 0x3b
67#define DHCP_VENDOR 0x3c
68#define DHCP_CLIENT_ID 0x3d
69#define DHCP_FQDN 0x51
70
71#define DHCP_END 0xFF
72
73
74#define BOOTREQUEST 1
75#define BOOTREPLY 2
76
77#define ETH_10MB 1
78#define ETH_10MB_LEN 6
79
80#define DHCPDISCOVER 1
81#define DHCPOFFER 2
82#define DHCPREQUEST 3
83#define DHCPDECLINE 4
84#define DHCPACK 5
85#define DHCPNAK 6
86#define DHCPRELEASE 7
87#define DHCPINFORM 8
88
89#define BROADCAST_FLAG 0x8000
90
91#define OPTION_FIELD 0
92#define FILE_FIELD 1
93#define SNAME_FIELD 2
94
95/* miscellaneous defines */
96#define OPT_CODE 0
97#define OPT_LEN 1
98#define OPT_DATA 2
99
100struct dhcp_option {
101 char name[12];
102 char flags;
103 uint8_t code;
104};
105
106extern const struct dhcp_option dhcp_options[];
107extern const unsigned char option_lengths[];
108
109uint8_t *get_option(struct dhcpMessage *packet, int code);
110int end_option(uint8_t *optionptr);
111int add_option_string(uint8_t *optionptr, uint8_t *string);
112int add_simple_option(uint8_t *optionptr, uint8_t code, uint32_t data);
113#if ENABLE_FEATURE_RFC3397
114char *dname_dec(const uint8_t *cstr, int clen, const char *pre);
115uint8_t *dname_enc(const uint8_t *cstr, int clen, const char *src, int *retlen);
116#endif
117
118#endif
Note: See TracBrowser for help on using the repository browser.