Magellan Linux

Contents of /trunk/mkinitrd-magellan/busybox/networking/udhcp/static_leases.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 984 - (show annotations) (download)
Sun May 30 11:32:42 2010 UTC (13 years, 11 months ago) by niro
File MIME type: text/plain
File size: 1907 byte(s)
-updated to busybox-1.16.1 and enabled blkid/uuid support in default config
1 /* vi: set sw=4 ts=4: */
2 /*
3 * static_leases.c -- Couple of functions to assist with storing and
4 * retrieving data for static leases
5 *
6 * Wade Berrier <wberrier@myrealbox.com> September 2004
7 *
8 * Licensed under GPLv2, see file LICENSE in this tarball for details.
9 */
10
11 #include "common.h"
12 #include "dhcpd.h"
13
14
15 /* Takes the address of the pointer to the static_leases linked list,
16 * address to a 6 byte mac address,
17 * 4 byte IP address */
18 void FAST_FUNC add_static_lease(struct static_lease **st_lease_pp,
19 uint8_t *mac,
20 uint32_t nip)
21 {
22 struct static_lease *st_lease;
23
24 /* Find the tail of the list */
25 while ((st_lease = *st_lease_pp) != NULL) {
26 st_lease_pp = &st_lease->next;
27 }
28
29 /* Add new node */
30 *st_lease_pp = st_lease = xzalloc(sizeof(*st_lease));
31 memcpy(st_lease->mac, mac, 6);
32 st_lease->nip = nip;
33 /*st_lease->next = NULL;*/
34 }
35
36 /* Find static lease IP by mac */
37 uint32_t FAST_FUNC get_static_nip_by_mac(struct static_lease *st_lease, void *mac)
38 {
39 while (st_lease) {
40 if (memcmp(st_lease->mac, mac, 6) == 0)
41 return st_lease->nip;
42 st_lease = st_lease->next;
43 }
44
45 return 0;
46 }
47
48 /* Check to see if an IP is reserved as a static IP */
49 int FAST_FUNC is_nip_reserved(struct static_lease *st_lease, uint32_t nip)
50 {
51 while (st_lease) {
52 if (st_lease->nip == nip)
53 return 1;
54 st_lease = st_lease->next;
55 }
56
57 return 0;
58 }
59
60 #if defined CONFIG_UDHCP_DEBUG && CONFIG_UDHCP_DEBUG >= 2
61 /* Print out static leases just to check what's going on */
62 /* Takes the address of the pointer to the static_leases linked list */
63 void FAST_FUNC log_static_leases(struct static_lease **st_lease_pp)
64 {
65 struct static_lease *cur;
66
67 if (dhcp_verbose < 2)
68 return;
69
70 cur = *st_lease_pp;
71 while (cur) {
72 bb_info_msg("static lease: mac:%02x:%02x:%02x:%02x:%02x:%02x nip:%x",
73 cur->mac[0], cur->mac[1], cur->mac[2],
74 cur->mac[3], cur->mac[4], cur->mac[5],
75 cur->nip
76 );
77 cur = cur->next;
78 }
79 }
80 #endif