root / lab4 / .minix-src / include / net / gen / dhcp.h @ 14
History | View | Annotate | Download (2.95 KB)
1 |
/* net/gen/dhcp.h - DHCP packet format Author: Kees J. Bot
|
---|---|
2 |
* 1 Dec 2000
|
3 |
*/
|
4 |
|
5 |
#ifndef __NET__GEN__DHCP_H__
|
6 |
#define __NET__GEN__DHCP_H__
|
7 |
|
8 |
typedef struct dhcp { |
9 |
u8_t op; /* Message opcode/type. */
|
10 |
u8_t htype; /* Hardware address type. */
|
11 |
u8_t hlen; /* Hardware address length. */
|
12 |
u8_t hops; /* Hop count when relaying. */
|
13 |
u32_t xid; /* Transaction ID. */
|
14 |
u16_t secs; /* Seconds past since client began. */
|
15 |
u16_t flags; /* Flags. */
|
16 |
ipaddr_t ciaddr; /* Client IP address. */
|
17 |
ipaddr_t yiaddr; /* "Your" IP address. */
|
18 |
ipaddr_t siaddr; /* Boot server IP address. */
|
19 |
ipaddr_t giaddr; /* Relay agent (gateway) IP address. */
|
20 |
u8_t chaddr[16]; /* Client hardware address. */ |
21 |
u8_t sname[64]; /* Server host name. */ |
22 |
u8_t file[128]; /* Boot file. */ |
23 |
u32_t magic; /* Magic number. */
|
24 |
u8_t options[308]; /* Optional parameters. */ |
25 |
} dhcp_t; |
26 |
|
27 |
/* DHCP operations and stuff: */
|
28 |
#define DHCP_BOOTREQUEST 1 /* Boot request message. */ |
29 |
#define DHCP_BOOTREPLY 2 /* Boot reply message. */ |
30 |
#define DHCP_HTYPE_ETH 1 /* Ethernet hardware type. */ |
31 |
#define DHCP_HLEN_ETH 6 /* Ethernet hardware address length. */ |
32 |
#define DHCP_FLAGS_BCAST 0x8000U /* Reply must be broadcast to client. */ |
33 |
|
34 |
/* "Magic" first four option bytes. */
|
35 |
#define DHCP_MAGIC htonl(0x63825363UL) |
36 |
|
37 |
/* DHCP common tags: */
|
38 |
#define DHCP_TAG_NETMASK 1 /* Netmask. */ |
39 |
#define DHCP_TAG_GATEWAY 3 /* Gateway list. */ |
40 |
#define DHCP_TAG_DNS 6 /* DNS Nameserver list. */ |
41 |
#define DHCP_TAG_HOSTNAME 12 /* Host name. */ |
42 |
#define DHCP_TAG_DOMAIN 15 /* Domain. */ |
43 |
#define DHCP_TAG_IPMTU 26 /* Interface MTU. */ |
44 |
|
45 |
/* DHCP protocol tags: */
|
46 |
#define DHCP_TAG_REQIP 50 /* Request this IP. */ |
47 |
#define DHCP_TAG_LEASE 51 /* Lease time requested/offered. */ |
48 |
#define DHCP_TAG_OVERLOAD 52 /* Options continued in file/sname. */ |
49 |
#define DHCP_TAG_TYPE 53 /* DHCP message (values below). */ |
50 |
#define DHCP_TAG_SERVERID 54 /* Server identifier. */ |
51 |
#define DHCP_TAG_REQPAR 55 /* Parameters requested. */ |
52 |
#define DHCP_TAG_MESSAGE 56 /* Error message. */ |
53 |
#define DHCP_TAG_MAXDHCP 57 /* Max DHCP packet size. */ |
54 |
#define DHCP_TAG_RENEWAL 58 /* Time to go into renewal state. */ |
55 |
#define DHCP_TAG_REBINDING 59 /* Time to go into rebinding state. */ |
56 |
#define DHCP_TAG_CLASSID 60 /* Class identifier. */ |
57 |
#define DHCP_TAG_CLIENTID 61 /* Client identifier. */ |
58 |
|
59 |
/* DHCP messages: */
|
60 |
#define DHCP_DISCOVER 1 /* Locate available servers. */ |
61 |
#define DHCP_OFFER 2 /* Parameters offered to client. */ |
62 |
#define DHCP_REQUEST 3 /* (Re)request offered parameters. */ |
63 |
#define DHCP_DECLINE 4 /* Client declines offer. */ |
64 |
#define DHCP_ACK 5 /* Server acknowlegdes request. */ |
65 |
#define DHCP_NAK 6 /* Server denies request. */ |
66 |
#define DHCP_RELEASE 7 /* Client relinguishes address. */ |
67 |
#define DHCP_INFORM 8 /* Client requests just local config. */ |
68 |
|
69 |
void dhcp_init(dhcp_t *_dp);
|
70 |
int dhcp_settag(dhcp_t *_dp, int _tag, void *_data, size_t _len); |
71 |
int dhcp_gettag(dhcp_t *_dp, int _searchtag, u8_t **_pdata, size_t *_plen); |
72 |
|
73 |
#endif /* __NET__GEN__DHCP_H__ */ |