diff options
-rw-r--r-- | networking/udhcp/dhcpd.c | 25 | ||||
-rw-r--r-- | networking/udhcp/dhcpd.h | 6 | ||||
-rw-r--r-- | networking/udhcp/dumpleases.c | 4 | ||||
-rw-r--r-- | networking/udhcp/files.c | 6 | ||||
-rw-r--r-- | networking/udhcp/leases.c | 20 | ||||
-rw-r--r-- | networking/udhcp/serverpacket.c | 2 |
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; | |||
78 | typedef int32_t signed_leasetime_t; | 78 | typedef int32_t signed_leasetime_t; |
79 | 79 | ||
80 | struct dhcpOfferedAddr { | 80 | struct 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 |