Project

General

Profile

Statistics
| Revision:

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__ */