diff options
Diffstat (limited to 'networking/udhcp/leases.c')
-rw-r--r-- | networking/udhcp/leases.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/networking/udhcp/leases.c b/networking/udhcp/leases.c index dce056654..d478880a3 100644 --- a/networking/udhcp/leases.c +++ b/networking/udhcp/leases.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * leases.c -- tools to manage DHCP leases | 2 | * leases.c -- tools to manage DHCP leases |
3 | * Russ Dill <Russ.Dill@asu.edu> July 2001 | 3 | * Russ Dill <Russ.Dill@asu.edu> July 2001 |
4 | */ | 4 | */ |
5 | 5 | ||
@@ -23,9 +23,9 @@ uint8_t blank_chaddr[] = {[0 ... 15] = 0}; | |||
23 | void clear_lease(uint8_t *chaddr, uint32_t yiaddr) | 23 | void clear_lease(uint8_t *chaddr, uint32_t yiaddr) |
24 | { | 24 | { |
25 | unsigned int i, j; | 25 | unsigned int i, j; |
26 | 26 | ||
27 | for (j = 0; j < 16 && !chaddr[j]; j++); | 27 | for (j = 0; j < 16 && !chaddr[j]; j++); |
28 | 28 | ||
29 | for (i = 0; i < server_config.max_leases; i++) | 29 | for (i = 0; i < server_config.max_leases; i++) |
30 | if ((j != 16 && !memcmp(leases[i].chaddr, chaddr, 16)) || | 30 | if ((j != 16 && !memcmp(leases[i].chaddr, chaddr, 16)) || |
31 | (yiaddr && leases[i].yiaddr == yiaddr)) { | 31 | (yiaddr && leases[i].yiaddr == yiaddr)) { |
@@ -38,18 +38,18 @@ void clear_lease(uint8_t *chaddr, uint32_t yiaddr) | |||
38 | struct dhcpOfferedAddr *add_lease(uint8_t *chaddr, uint32_t yiaddr, unsigned long lease) | 38 | struct dhcpOfferedAddr *add_lease(uint8_t *chaddr, uint32_t yiaddr, unsigned long lease) |
39 | { | 39 | { |
40 | struct dhcpOfferedAddr *oldest; | 40 | struct dhcpOfferedAddr *oldest; |
41 | 41 | ||
42 | /* clean out any old ones */ | 42 | /* clean out any old ones */ |
43 | clear_lease(chaddr, yiaddr); | 43 | clear_lease(chaddr, yiaddr); |
44 | 44 | ||
45 | oldest = oldest_expired_lease(); | 45 | oldest = oldest_expired_lease(); |
46 | 46 | ||
47 | if (oldest) { | 47 | if (oldest) { |
48 | memcpy(oldest->chaddr, chaddr, 16); | 48 | memcpy(oldest->chaddr, chaddr, 16); |
49 | oldest->yiaddr = yiaddr; | 49 | oldest->yiaddr = yiaddr; |
50 | oldest->expires = time(0) + lease; | 50 | oldest->expires = time(0) + lease; |
51 | } | 51 | } |
52 | 52 | ||
53 | return oldest; | 53 | return oldest; |
54 | } | 54 | } |
55 | 55 | ||
@@ -58,7 +58,7 @@ struct dhcpOfferedAddr *add_lease(uint8_t *chaddr, uint32_t yiaddr, unsigned lon | |||
58 | int lease_expired(struct dhcpOfferedAddr *lease) | 58 | int lease_expired(struct dhcpOfferedAddr *lease) |
59 | { | 59 | { |
60 | return (lease->expires < (unsigned long) time(0)); | 60 | return (lease->expires < (unsigned long) time(0)); |
61 | } | 61 | } |
62 | 62 | ||
63 | 63 | ||
64 | /* Find the oldest expired lease, NULL if there are no expired leases */ | 64 | /* Find the oldest expired lease, NULL if there are no expired leases */ |
@@ -68,14 +68,14 @@ struct dhcpOfferedAddr *oldest_expired_lease(void) | |||
68 | unsigned long oldest_lease = time(0); | 68 | unsigned long oldest_lease = time(0); |
69 | unsigned int i; | 69 | unsigned int i; |
70 | 70 | ||
71 | 71 | ||
72 | for (i = 0; i < server_config.max_leases; i++) | 72 | for (i = 0; i < server_config.max_leases; i++) |
73 | if (oldest_lease > leases[i].expires) { | 73 | if (oldest_lease > leases[i].expires) { |
74 | oldest_lease = leases[i].expires; | 74 | oldest_lease = leases[i].expires; |
75 | oldest = &(leases[i]); | 75 | oldest = &(leases[i]); |
76 | } | 76 | } |
77 | return oldest; | 77 | return oldest; |
78 | 78 | ||
79 | } | 79 | } |
80 | 80 | ||
81 | 81 | ||
@@ -86,7 +86,7 @@ struct dhcpOfferedAddr *find_lease_by_chaddr(uint8_t *chaddr) | |||
86 | 86 | ||
87 | for (i = 0; i < server_config.max_leases; i++) | 87 | for (i = 0; i < server_config.max_leases; i++) |
88 | if (!memcmp(leases[i].chaddr, chaddr, 16)) return &(leases[i]); | 88 | if (!memcmp(leases[i].chaddr, chaddr, 16)) return &(leases[i]); |
89 | 89 | ||
90 | return NULL; | 90 | return NULL; |
91 | } | 91 | } |
92 | 92 | ||
@@ -98,7 +98,7 @@ struct dhcpOfferedAddr *find_lease_by_yiaddr(uint32_t yiaddr) | |||
98 | 98 | ||
99 | for (i = 0; i < server_config.max_leases; i++) | 99 | for (i = 0; i < server_config.max_leases; i++) |
100 | if (leases[i].yiaddr == yiaddr) return &(leases[i]); | 100 | if (leases[i].yiaddr == yiaddr) return &(leases[i]); |
101 | 101 | ||
102 | return NULL; | 102 | return NULL; |
103 | } | 103 | } |
104 | 104 | ||
@@ -120,10 +120,10 @@ static int check_ip(uint32_t addr) | |||
120 | 120 | ||
121 | /* find an assignable address, it check_expired is true, we check all the expired leases as well. | 121 | /* find an assignable address, it check_expired is true, we check all the expired leases as well. |
122 | * Maybe this should try expired leases by age... */ | 122 | * Maybe this should try expired leases by age... */ |
123 | uint32_t find_address(int check_expired) | 123 | uint32_t find_address(int check_expired) |
124 | { | 124 | { |
125 | uint32_t addr, ret; | 125 | uint32_t addr, ret; |
126 | struct dhcpOfferedAddr *lease = NULL; | 126 | struct dhcpOfferedAddr *lease = NULL; |
127 | 127 | ||
128 | addr = ntohl(server_config.start); /* addr is in host order here */ | 128 | addr = ntohl(server_config.start); /* addr is in host order here */ |
129 | for (;addr <= ntohl(server_config.end); addr++) { | 129 | for (;addr <= ntohl(server_config.end); addr++) { |