aboutsummaryrefslogtreecommitdiff
path: root/networking/udhcp/leases.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/udhcp/leases.c')
-rw-r--r--networking/udhcp/leases.c30
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};
23void clear_lease(uint8_t *chaddr, uint32_t yiaddr) 23void 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)
38struct dhcpOfferedAddr *add_lease(uint8_t *chaddr, uint32_t yiaddr, unsigned long lease) 38struct 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
58int lease_expired(struct dhcpOfferedAddr *lease) 58int 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... */
123uint32_t find_address(int check_expired) 123uint32_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++) {