source: MondoRescue/branches/stable/mindi-busybox/networking/udhcp/dhcpd.h @ 821

Last change on this file since 821 was 821, checked in by Bruno Cornec, 14 years ago

Addition of busybox 1.2.1 as a mindi-busybox new package
This should avoid delivering binary files in mindi not built there (Fedora and Debian are quite serious about that)

File size: 4.1 KB
Line 
1/* dhcpd.h */
2#ifndef _DHCPD_H
3#define _DHCPD_H
4
5#include <netinet/ip.h>
6#include <netinet/udp.h>
7
8#include "libbb_udhcp.h"
9#include "leases.h"
10
11/************************************/
12/* Defaults _you_ may want to tweak */
13/************************************/
14
15/* the period of time the client is allowed to use that address */
16#define LEASE_TIME              (60*60*24*10) /* 10 days of seconds */
17#define LEASES_FILE     "/var/lib/misc/udhcpd.leases"
18
19/* where to find the DHCP server configuration file */
20#define DHCPD_CONF_FILE         "/etc/udhcpd.conf"
21
22/*****************************************************************/
23/* Do not modify below here unless you know what you are doing!! */
24/*****************************************************************/
25
26/* DHCP protocol -- see RFC 2131 */
27#define SERVER_PORT     67
28#define CLIENT_PORT     68
29
30#define DHCP_MAGIC      0x63825363
31
32/* DHCP option codes (partial list) */
33#define DHCP_PADDING        0x00
34#define DHCP_SUBNET     0x01
35#define DHCP_TIME_OFFSET    0x02
36#define DHCP_ROUTER     0x03
37#define DHCP_TIME_SERVER    0x04
38#define DHCP_NAME_SERVER    0x05
39#define DHCP_DNS_SERVER     0x06
40#define DHCP_LOG_SERVER     0x07
41#define DHCP_COOKIE_SERVER  0x08
42#define DHCP_LPR_SERVER     0x09
43#define DHCP_HOST_NAME      0x0c
44#define DHCP_BOOT_SIZE      0x0d
45#define DHCP_DOMAIN_NAME    0x0f
46#define DHCP_SWAP_SERVER    0x10
47#define DHCP_ROOT_PATH      0x11
48#define DHCP_IP_TTL     0x17
49#define DHCP_MTU        0x1a
50#define DHCP_BROADCAST      0x1c
51#define DHCP_NTP_SERVER     0x2a
52#define DHCP_WINS_SERVER    0x2c
53#define DHCP_REQUESTED_IP   0x32
54#define DHCP_LEASE_TIME     0x33
55#define DHCP_OPTION_OVER    0x34
56#define DHCP_MESSAGE_TYPE   0x35
57#define DHCP_SERVER_ID      0x36
58#define DHCP_PARAM_REQ      0x37
59#define DHCP_MESSAGE        0x38
60#define DHCP_MAX_SIZE       0x39
61#define DHCP_T1         0x3a
62#define DHCP_T2         0x3b
63#define DHCP_VENDOR     0x3c
64#define DHCP_CLIENT_ID      0x3d
65#define DHCP_FQDN       0x51
66
67#define DHCP_END        0xFF
68
69
70#define BOOTREQUEST     1
71#define BOOTREPLY       2
72
73#define ETH_10MB        1
74#define ETH_10MB_LEN        6
75
76#define DHCPDISCOVER        1
77#define DHCPOFFER       2
78#define DHCPREQUEST     3
79#define DHCPDECLINE     4
80#define DHCPACK         5
81#define DHCPNAK         6
82#define DHCPRELEASE     7
83#define DHCPINFORM      8
84
85#define BROADCAST_FLAG      0x8000
86
87#define OPTION_FIELD        0
88#define FILE_FIELD      1
89#define SNAME_FIELD     2
90
91/* miscellaneous defines */
92#define MAC_BCAST_ADDR      (uint8_t *) "\xff\xff\xff\xff\xff\xff"
93#define OPT_CODE 0
94#define OPT_LEN 1
95#define OPT_DATA 2
96
97struct option_set {
98    uint8_t *data;
99    struct option_set *next;
100};
101
102struct static_lease {
103    uint8_t *mac;
104    uint32_t *ip;
105    struct static_lease *next;
106};
107
108struct server_config_t {
109    uint32_t server;        /* Our IP, in network order */
110    uint32_t start;         /* Start address of leases, network order */
111    uint32_t end;           /* End of leases, network order */
112    struct option_set *options; /* List of DHCP options loaded from the config file */
113    char *interface;        /* The name of the interface to use */
114    int ifindex;            /* Index number of the interface to use */
115    uint8_t arp[6];         /* Our arp address */
116    unsigned long lease;        /* lease time in seconds (host order) */
117    unsigned long max_leases;   /* maximum number of leases (including reserved address) */
118    char remaining;         /* should the lease file be interpreted as lease time remaining, or
119                     * as the time the lease expires */
120    unsigned long auto_time;    /* how long should udhcpd wait before writing a config file.
121                     * if this is zero, it will only write one on SIGUSR1 */
122    unsigned long decline_time; /* how long an address is reserved if a client returns a
123                     * decline message */
124    unsigned long conflict_time;    /* how long an arp conflict offender is leased for */
125    unsigned long offer_time;   /* how long an offered address is reserved */
126    unsigned long min_lease;    /* minimum lease a client can request*/
127    char *lease_file;
128    char *pidfile;
129    char *notify_file;      /* What to run whenever leases are written */
130    uint32_t siaddr;        /* next server bootp option */
131    char *sname;            /* bootp server name */
132    char *boot_file;        /* bootp boot file option */
133    struct static_lease *static_leases; /* List of ip/mac pairs to assign static leases */
134};
135
136extern struct server_config_t server_config;
137extern struct dhcpOfferedAddr *leases;
138
139
140#endif
Note: See TracBrowser for help on using the repository browser.