Contents of /trunk/mkinitrd-magellan/busybox/networking/udhcp/dhcpd.h
Parent Directory | Revision Log
Revision 816 -
(show annotations)
(download)
Fri Apr 24 18:33:46 2009 UTC (15 years, 1 month ago) by niro
File MIME type: text/plain
File size: 4680 byte(s)
Fri Apr 24 18:33:46 2009 UTC (15 years, 1 month ago) by niro
File MIME type: text/plain
File size: 4680 byte(s)
-updated to busybox-1.13.4
1 | /* vi: set sw=4 ts=4: */ |
2 | /* dhcpd.h */ |
3 | |
4 | #ifndef _DHCPD_H |
5 | #define _DHCPD_H |
6 | |
7 | #if __GNUC_PREREQ(4,1) |
8 | # pragma GCC visibility push(hidden) |
9 | #endif |
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 CONFIG_DHCPD_LEASES_FILE |
18 | |
19 | /* where to find the DHCP server configuration file */ |
20 | #define DHCPD_CONF_FILE "/etc/udhcpd.conf" |
21 | |
22 | struct option_set { |
23 | uint8_t *data; |
24 | struct option_set *next; |
25 | }; |
26 | |
27 | struct static_lease { |
28 | struct static_lease *next; |
29 | uint8_t *mac; |
30 | uint32_t *ip; |
31 | }; |
32 | |
33 | struct server_config_t { |
34 | uint32_t server; /* Our IP, in network order */ |
35 | #if ENABLE_FEATURE_UDHCP_PORT |
36 | uint16_t port; |
37 | #endif |
38 | /* start,end are in host order: we need to compare start <= ip <= end */ |
39 | uint32_t start_ip; /* Start address of leases, in host order */ |
40 | uint32_t end_ip; /* End of leases, in host order */ |
41 | struct option_set *options; /* List of DHCP options loaded from the config file */ |
42 | char *interface; /* The name of the interface to use */ |
43 | int ifindex; /* Index number of the interface to use */ |
44 | uint8_t arp[6]; /* Our arp address */ |
45 | char remaining; /* should the lease file be interpreted as lease time remaining, or |
46 | * as the time the lease expires */ |
47 | uint32_t lease; /* lease time in seconds (host order) */ |
48 | uint32_t max_leases; /* maximum number of leases (including reserved address) */ |
49 | uint32_t auto_time; /* how long should udhcpd wait before writing a config file. |
50 | * if this is zero, it will only write one on SIGUSR1 */ |
51 | uint32_t decline_time; /* how long an address is reserved if a client returns a |
52 | * decline message */ |
53 | uint32_t conflict_time; /* how long an arp conflict offender is leased for */ |
54 | uint32_t offer_time; /* how long an offered address is reserved */ |
55 | uint32_t min_lease; /* minimum lease a client can request */ |
56 | char *lease_file; |
57 | char *pidfile; |
58 | char *notify_file; /* What to run whenever leases are written */ |
59 | uint32_t siaddr; /* next server bootp option */ |
60 | char *sname; /* bootp server name */ |
61 | char *boot_file; /* bootp boot file option */ |
62 | struct static_lease *static_leases; /* List of ip/mac pairs to assign static leases */ |
63 | }; |
64 | |
65 | #define server_config (*(struct server_config_t*)&bb_common_bufsiz1) |
66 | /* client_config sits in 2nd half of bb_common_bufsiz1 */ |
67 | |
68 | #if ENABLE_FEATURE_UDHCP_PORT |
69 | #define SERVER_PORT (server_config.port) |
70 | #else |
71 | #define SERVER_PORT 67 |
72 | #endif |
73 | |
74 | extern struct dhcpOfferedAddr *leases; |
75 | |
76 | |
77 | /*** leases.h ***/ |
78 | |
79 | struct dhcpOfferedAddr { |
80 | uint8_t chaddr[16]; |
81 | uint32_t yiaddr; /* network order */ |
82 | uint32_t expires; /* host order */ |
83 | }; |
84 | |
85 | struct dhcpOfferedAddr *add_lease(const uint8_t *chaddr, uint32_t yiaddr, unsigned long lease) FAST_FUNC; |
86 | int lease_expired(struct dhcpOfferedAddr *lease) FAST_FUNC; |
87 | struct dhcpOfferedAddr *find_lease_by_chaddr(const uint8_t *chaddr) FAST_FUNC; |
88 | struct dhcpOfferedAddr *find_lease_by_yiaddr(uint32_t yiaddr) FAST_FUNC; |
89 | uint32_t find_address(int check_expired) FAST_FUNC; |
90 | |
91 | |
92 | /*** static_leases.h ***/ |
93 | |
94 | /* Config file will pass static lease info to this function which will add it |
95 | * to a data structure that can be searched later */ |
96 | int addStaticLease(struct static_lease **lease_struct, uint8_t *mac, uint32_t *ip) FAST_FUNC; |
97 | /* Check to see if a mac has an associated static lease */ |
98 | uint32_t getIpByMac(struct static_lease *lease_struct, void *arg) FAST_FUNC; |
99 | /* Check to see if an ip is reserved as a static ip */ |
100 | uint32_t reservedIp(struct static_lease *lease_struct, uint32_t ip) FAST_FUNC; |
101 | /* Print out static leases just to check what's going on (debug code) */ |
102 | void printStaticLeases(struct static_lease **lease_struct) FAST_FUNC; |
103 | |
104 | |
105 | /*** serverpacket.h ***/ |
106 | |
107 | int send_offer(struct dhcpMessage *oldpacket) FAST_FUNC; |
108 | int send_NAK(struct dhcpMessage *oldpacket) FAST_FUNC; |
109 | int send_ACK(struct dhcpMessage *oldpacket, uint32_t yiaddr) FAST_FUNC; |
110 | int send_inform(struct dhcpMessage *oldpacket) FAST_FUNC; |
111 | |
112 | |
113 | /*** files.h ***/ |
114 | |
115 | void read_config(const char *file) FAST_FUNC; |
116 | void write_leases(void) FAST_FUNC; |
117 | void read_leases(const char *file) FAST_FUNC; |
118 | struct option_set *find_option(struct option_set *opt_list, uint8_t code) FAST_FUNC; |
119 | |
120 | |
121 | #if __GNUC_PREREQ(4,1) |
122 | # pragma GCC visibility pop |
123 | #endif |
124 | |
125 | #endif |