aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--networking/udhcp/dhcpd.c25
-rw-r--r--networking/udhcp/dhcpd.h6
-rw-r--r--networking/udhcp/dumpleases.c4
-rw-r--r--networking/udhcp/files.c6
-rw-r--r--networking/udhcp/leases.c20
-rw-r--r--networking/udhcp/serverpacket.c2
6 files changed, 32 insertions, 31 deletions
diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c
index ccdfd362b..61e4a1d95 100644
--- a/networking/udhcp/dhcpd.c
+++ b/networking/udhcp/dhcpd.c
@@ -170,8 +170,8 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
170 if (static_lease_ip) { 170 if (static_lease_ip) {
171 bb_info_msg("Found static lease: %x", static_lease_ip); 171 bb_info_msg("Found static lease: %x", static_lease_ip);
172 172
173 memcpy(&static_lease.chaddr, &packet.chaddr, 16); 173 memcpy(&static_lease.lease_mac16, &packet.chaddr, 16);
174 static_lease.yiaddr = static_lease_ip; 174 static_lease.lease_nip = static_lease_ip;
175 static_lease.expires = 0; 175 static_lease.expires = 0;
176 176
177 lease = &static_lease; 177 lease = &static_lease;
@@ -204,19 +204,19 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
204 DEBUG("server_id = %08x", ntohl(server_id_aligned)); 204 DEBUG("server_id = %08x", ntohl(server_id_aligned));
205 if (server_id_aligned == server_config.server 205 if (server_id_aligned == server_config.server
206 && requested 206 && requested
207 && requested_aligned == lease->yiaddr 207 && requested_aligned == lease->lease_nip
208 ) { 208 ) {
209 send_ACK(&packet, lease->yiaddr); 209 send_ACK(&packet, lease->lease_nip);
210 } 210 }
211 } else if (requested) { 211 } else if (requested) {
212 /* INIT-REBOOT State */ 212 /* INIT-REBOOT State */
213 if (lease->yiaddr == requested_aligned) 213 if (lease->lease_nip == requested_aligned)
214 send_ACK(&packet, lease->yiaddr); 214 send_ACK(&packet, lease->lease_nip);
215 else 215 else
216 send_NAK(&packet); 216 send_NAK(&packet);
217 } else if (lease->yiaddr == packet.ciaddr) { 217 } else if (lease->lease_nip == packet.ciaddr) {
218 /* RENEWING or REBINDING State */ 218 /* RENEWING or REBINDING State */
219 send_ACK(&packet, lease->yiaddr); 219 send_ACK(&packet, lease->lease_nip);
220 } else { /* don't know what to do!!!! */ 220 } else { /* don't know what to do!!!! */
221 send_NAK(&packet); 221 send_NAK(&packet);
222 } 222 }
@@ -231,10 +231,11 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
231 if (lease) { 231 if (lease) {
232 if (lease_expired(lease)) { 232 if (lease_expired(lease)) {
233 /* probably best if we drop this lease */ 233 /* probably best if we drop this lease */
234 memset(lease->chaddr, 0, 16); 234 memset(lease->lease_mac16, 0, 16);
235 /* make some contention for this address */ 235 } else {
236 } else 236 /* make some contention for this address */
237 send_NAK(&packet); 237 send_NAK(&packet);
238 }
238 } else { 239 } else {
239 uint32_t r = ntohl(requested_aligned); 240 uint32_t r = ntohl(requested_aligned);
240 if (r < server_config.start_ip 241 if (r < server_config.start_ip
@@ -252,7 +253,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
252 case DHCPDECLINE: 253 case DHCPDECLINE:
253 DEBUG("Received DECLINE"); 254 DEBUG("Received DECLINE");
254 if (lease) { 255 if (lease) {
255 memset(lease->chaddr, 0, 16); 256 memset(lease->lease_mac16, 0, 16);
256 lease->expires = time(NULL) + server_config.decline_time; 257 lease->expires = time(NULL) + server_config.decline_time;
257 } 258 }
258 break; 259 break;
diff --git a/networking/udhcp/dhcpd.h b/networking/udhcp/dhcpd.h
index 4b5fcc00f..a3ace92d4 100644
--- a/networking/udhcp/dhcpd.h
+++ b/networking/udhcp/dhcpd.h
@@ -78,9 +78,9 @@ typedef uint32_t leasetime_t;
78typedef int32_t signed_leasetime_t; 78typedef int32_t signed_leasetime_t;
79 79
80struct dhcpOfferedAddr { 80struct dhcpOfferedAddr {
81 uint8_t chaddr[16]; 81 uint8_t lease_mac16[16];
82 /* In network order */ 82 /* "nip": IP in network order */
83 uint32_t yiaddr; 83 uint32_t lease_nip;
84 /* Unix time when lease expires, regardless of value of 84 /* Unix time when lease expires, regardless of value of
85 * server_config.remaining. Kept in memory in host order. 85 * server_config.remaining. Kept in memory in host order.
86 * When written to file, converted to network order 86 * When written to file, converted to network order
diff --git a/networking/udhcp/dumpleases.c b/networking/udhcp/dumpleases.c
index 1558f8848..5b98aa5fe 100644
--- a/networking/udhcp/dumpleases.c
+++ b/networking/udhcp/dumpleases.c
@@ -61,10 +61,10 @@ int dumpleases_main(int argc UNUSED_PARAM, char **argv)
61 while (full_read(fd, &lease, sizeof(lease)) == sizeof(lease)) { 61 while (full_read(fd, &lease, sizeof(lease)) == sizeof(lease)) {
62 const char *fmt = ":%02x" + 1; 62 const char *fmt = ":%02x" + 1;
63 for (i = 0; i < 6; i++) { 63 for (i = 0; i < 6; i++) {
64 printf(fmt, lease.chaddr[i]); 64 printf(fmt, lease.lease_mac16[i]);
65 fmt = ":%02x"; 65 fmt = ":%02x";
66 } 66 }
67 addr.s_addr = lease.yiaddr; 67 addr.s_addr = lease.lease_nip;
68 /* actually, 15+1 and 19+1, +1 is a space between columns */ 68 /* actually, 15+1 and 19+1, +1 is a space between columns */
69 /* lease.hostname is char[20] and is always NUL terminated */ 69 /* lease.hostname is char[20] and is always NUL terminated */
70 printf(" %-16s%-20s", inet_ntoa(addr), lease.hostname); 70 printf(" %-16s%-20s", inet_ntoa(addr), lease.hostname);
diff --git a/networking/udhcp/files.c b/networking/udhcp/files.c
index af7730890..671ea94c9 100644
--- a/networking/udhcp/files.c
+++ b/networking/udhcp/files.c
@@ -360,7 +360,7 @@ void FAST_FUNC write_leases(void)
360 for (i = 0; i < server_config.max_leases; i++) { 360 for (i = 0; i < server_config.max_leases; i++) {
361 leasetime_t tmp_time; 361 leasetime_t tmp_time;
362 362
363 if (leases[i].yiaddr == 0) 363 if (leases[i].lease_nip == 0)
364 continue; 364 continue;
365 365
366 /* Screw with the time in the struct, for easier writing */ 366 /* Screw with the time in the struct, for easier writing */
@@ -413,14 +413,14 @@ void FAST_FUNC read_leases(const char *file)
413 IF_UDHCP_DEBUG(i = 0;) 413 IF_UDHCP_DEBUG(i = 0;)
414 while (full_read(fd, &lease, sizeof(lease)) == sizeof(lease)) { 414 while (full_read(fd, &lease, sizeof(lease)) == sizeof(lease)) {
415 /* ADDME: what if it matches some static lease? */ 415 /* ADDME: what if it matches some static lease? */
416 uint32_t y = ntohl(lease.yiaddr); 416 uint32_t y = ntohl(lease.lease_nip);
417 if (y >= server_config.start_ip && y <= server_config.end_ip) { 417 if (y >= server_config.start_ip && y <= server_config.end_ip) {
418 signed_leasetime_t expires = ntohl(lease.expires) - (signed_leasetime_t)time_passed; 418 signed_leasetime_t expires = ntohl(lease.expires) - (signed_leasetime_t)time_passed;
419 if (expires <= 0) 419 if (expires <= 0)
420 continue; 420 continue;
421 /* NB: add_lease takes "relative time", IOW, 421 /* NB: add_lease takes "relative time", IOW,
422 * lease duration, not lease deadline. */ 422 * lease duration, not lease deadline. */
423 if (!(add_lease(lease.chaddr, lease.yiaddr, expires, lease.hostname))) { 423 if (!(add_lease(lease.lease_mac16, lease.lease_nip, expires, lease.hostname))) {
424 bb_error_msg("too many leases while loading %s", file); 424 bb_error_msg("too many leases while loading %s", file);
425 break; 425 break;
426 } 426 }
diff --git a/networking/udhcp/leases.c b/networking/udhcp/leases.c
index b2cdd1942..040126fe8 100644
--- a/networking/udhcp/leases.c
+++ b/networking/udhcp/leases.c
@@ -38,10 +38,10 @@ static void clear_lease(const uint8_t *chaddr, uint32_t yiaddr)
38 continue; 38 continue;
39 39
40 for (i = 0; i < server_config.max_leases; i++) { 40 for (i = 0; i < server_config.max_leases; i++) {
41 if ((j != 16 && memcmp(leases[i].chaddr, chaddr, 16) == 0) 41 if ((j != 16 && memcmp(leases[i].lease_mac16, chaddr, 16) == 0)
42 || (yiaddr && leases[i].yiaddr == yiaddr) 42 || (yiaddr && leases[i].lease_nip == yiaddr)
43 ) { 43 ) {
44 memset(&(leases[i]), 0, sizeof(leases[i])); 44 memset(&leases[i], 0, sizeof(leases[i]));
45 } 45 }
46 } 46 }
47} 47}
@@ -75,8 +75,8 @@ struct dhcpOfferedAddr* FAST_FUNC add_lease(
75 hostname++; 75 hostname++;
76 } 76 }
77 } 77 }
78 memcpy(oldest->chaddr, chaddr, 16); 78 memcpy(oldest->lease_mac16, chaddr, 16);
79 oldest->yiaddr = yiaddr; 79 oldest->lease_nip = yiaddr;
80 oldest->expires = time(NULL) + leasetime; 80 oldest->expires = time(NULL) + leasetime;
81 } 81 }
82 82
@@ -97,7 +97,7 @@ struct dhcpOfferedAddr* FAST_FUNC find_lease_by_chaddr(const uint8_t *chaddr)
97 unsigned i; 97 unsigned i;
98 98
99 for (i = 0; i < server_config.max_leases; i++) 99 for (i = 0; i < server_config.max_leases; i++)
100 if (!memcmp(leases[i].chaddr, chaddr, 16)) 100 if (!memcmp(leases[i].lease_mac16, chaddr, 16))
101 return &(leases[i]); 101 return &(leases[i]);
102 102
103 return NULL; 103 return NULL;
@@ -110,8 +110,8 @@ struct dhcpOfferedAddr* FAST_FUNC find_lease_by_yiaddr(uint32_t yiaddr)
110 unsigned i; 110 unsigned i;
111 111
112 for (i = 0; i < server_config.max_leases; i++) 112 for (i = 0; i < server_config.max_leases; i++)
113 if (leases[i].yiaddr == yiaddr) 113 if (leases[i].lease_nip == yiaddr)
114 return &(leases[i]); 114 return &leases[i];
115 115
116 return NULL; 116 return NULL;
117} 117}
@@ -174,9 +174,9 @@ uint32_t FAST_FUNC find_free_or_expired_address(const uint8_t *chaddr)
174 } 174 }
175 175
176 if (oldest_lease && lease_expired(oldest_lease) 176 if (oldest_lease && lease_expired(oldest_lease)
177 && nobody_responds_to_arp(oldest_lease->yiaddr, chaddr) 177 && nobody_responds_to_arp(oldest_lease->lease_nip, chaddr)
178 ) { 178 ) {
179 return oldest_lease->yiaddr; 179 return oldest_lease->lease_nip;
180 } 180 }
181 181
182 return 0; 182 return 0;
diff --git a/networking/udhcp/serverpacket.c b/networking/udhcp/serverpacket.c
index 157d157ba..6aa2d34fa 100644
--- a/networking/udhcp/serverpacket.c
+++ b/networking/udhcp/serverpacket.c
@@ -132,7 +132,7 @@ int FAST_FUNC send_offer(struct dhcpMessage *oldpacket)
132 signed_leasetime_t tmp = lease->expires - time(NULL); 132 signed_leasetime_t tmp = lease->expires - time(NULL);
133 if (tmp >= 0) 133 if (tmp >= 0)
134 lease_time_aligned = tmp; 134 lease_time_aligned = tmp;
135 packet.yiaddr = lease->yiaddr; 135 packet.yiaddr = lease->lease_nip;
136 } 136 }
137 /* Or the client has requested an IP */ 137 /* Or the client has requested an IP */
138 else if ((req = get_option(oldpacket, DHCP_REQUESTED_IP)) != NULL 138 else if ((req = get_option(oldpacket, DHCP_REQUESTED_IP)) != NULL