|
|
@ -149,7 +149,7 @@
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
/* strictly time_t is opaque, but this hack should work on all sane systems,
|
|
|
|
/* strictly time_t is opaque, but this hack should work on all sane systems,
|
|
|
|
even when sizeof(time_t) == 8 */
|
|
|
|
even when sizeof(time_t) == 8 */
|
|
|
|
@@ -268,10 +271,19 @@
|
|
|
|
@@ -268,7 +271,16 @@
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
@ -157,20 +157,15 @@
|
|
|
|
+#ifdef HAVE_LEASEFILE_EXPIRE
|
|
|
|
+#ifdef HAVE_LEASEFILE_EXPIRE
|
|
|
|
+ ourprintf(&err, "%u ",
|
|
|
|
+ ourprintf(&err, "%u ",
|
|
|
|
#ifdef HAVE_BROKEN_RTC
|
|
|
|
#ifdef HAVE_BROKEN_RTC
|
|
|
|
- ourprintf(&err, "%u ", lease->length);
|
|
|
|
|
|
|
|
+ (lease->length == 0) ? 0 :
|
|
|
|
+ (lease->length == 0) ? 0 :
|
|
|
|
#else
|
|
|
|
+#else
|
|
|
|
- ourprintf(&err, "%lu ", (unsigned long)lease->expires);
|
|
|
|
|
|
|
|
+ (lease->expires == 0) ? 0 :
|
|
|
|
+ (lease->expires == 0) ? 0 :
|
|
|
|
+#endif
|
|
|
|
+#endif
|
|
|
|
+ (unsigned int)difftime(lease->expires, now));
|
|
|
|
+ (unsigned int)difftime(lease->expires, now));
|
|
|
|
+#elif defined(HAVE_BROKEN_RTC)
|
|
|
|
+#elif defined(HAVE_BROKEN_RTC)
|
|
|
|
+ ourprintf(&err, "%u ", lease->length);
|
|
|
|
ourprintf(&err, "%u ", lease->length);
|
|
|
|
+#else
|
|
|
|
#else
|
|
|
|
+ ourprintf(&err, "%lu ", (unsigned long)lease->expires);
|
|
|
|
ourprintf(&err, "%lu ", (unsigned long)lease->expires);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (lease->hwaddr_type != ARPHRD_ETHER || lease->hwaddr_len == 0)
|
|
|
|
|
|
|
|
@@ -312,12 +324,21 @@
|
|
|
|
@@ -312,12 +324,21 @@
|
|
|
|
if (!(lease->flags & (LEASE_TA | LEASE_NA)))
|
|
|
|
if (!(lease->flags & (LEASE_TA | LEASE_NA)))
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
@ -179,28 +174,25 @@
|
|
|
|
+#ifdef HAVE_LEASEFILE_EXPIRE
|
|
|
|
+#ifdef HAVE_LEASEFILE_EXPIRE
|
|
|
|
+ ourprintf(&err, "%u ",
|
|
|
|
+ ourprintf(&err, "%u ",
|
|
|
|
#ifdef HAVE_BROKEN_RTC
|
|
|
|
#ifdef HAVE_BROKEN_RTC
|
|
|
|
- ourprintf(&err, "%u ", lease->length);
|
|
|
|
|
|
|
|
+ (lease->length == 0) ? 0 :
|
|
|
|
+ (lease->length == 0) ? 0 :
|
|
|
|
#else
|
|
|
|
+#else
|
|
|
|
- ourprintf(&err, "%lu ", (unsigned long)lease->expires);
|
|
|
|
|
|
|
|
+ (lease->expires == 0) ? 0 :
|
|
|
|
+ (lease->expires == 0) ? 0 :
|
|
|
|
#endif
|
|
|
|
+#endif
|
|
|
|
-
|
|
|
|
|
|
|
|
+ (unsigned int)difftime(lease->expires, now));
|
|
|
|
+ (unsigned int)difftime(lease->expires, now));
|
|
|
|
+#elif defined(HAVE_BROKEN_RTC)
|
|
|
|
+#elif defined(HAVE_BROKEN_RTC)
|
|
|
|
+ ourprintf(&err, "%u ", lease->length);
|
|
|
|
ourprintf(&err, "%u ", lease->length);
|
|
|
|
+#else
|
|
|
|
#else
|
|
|
|
+ ourprintf(&err, "%lu ", (unsigned long)lease->expires);
|
|
|
|
ourprintf(&err, "%lu ", (unsigned long)lease->expires);
|
|
|
|
+#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
-
|
|
|
|
+
|
|
|
|
+
|
|
|
|
inet_ntop(AF_INET6, &lease->addr6, daemon->addrbuff, ADDRSTRLEN);
|
|
|
|
inet_ntop(AF_INET6, &lease->addr6, daemon->addrbuff, ADDRSTRLEN);
|
|
|
|
|
|
|
|
|
|
|
|
ourprintf(&err, "%s%u %s ", (lease->flags & LEASE_TA) ? "T" : "",
|
|
|
|
ourprintf(&err, "%s%u %s ", (lease->flags & LEASE_TA) ? "T" : "",
|
|
|
|
@@ -1225,4 +1246,66 @@
|
|
|
|
@@ -1225,4 +1246,67 @@
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
-#endif /* HAVE_DHCP */
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#ifdef HAVE_TOMATO
|
|
|
|
+#ifdef HAVE_TOMATO
|
|
|
|
+void tomato_helper(time_t now)
|
|
|
|
+void tomato_helper(time_t now)
|
|
|
@ -213,11 +205,12 @@
|
|
|
|
+ /* if delete exists... */
|
|
|
|
+ /* if delete exists... */
|
|
|
|
+ if ((f = fopen("/var/tmp/dhcp/delete", "r")) != NULL) {
|
|
|
|
+ if ((f = fopen("/var/tmp/dhcp/delete", "r")) != NULL) {
|
|
|
|
+ while (fgets(buf, sizeof(buf), f)) {
|
|
|
|
+ while (fgets(buf, sizeof(buf), f)) {
|
|
|
|
+ ia.s_addr = inet_addr(buf);
|
|
|
|
+ buf[strcspn(buf, "\n")] = 0;
|
|
|
|
+ lease = lease_find_by_addr(ia);
|
|
|
|
+ inet_aton(buf, &ia);
|
|
|
|
+ if (lease) {
|
|
|
|
+ if (lease = lease_find_by_addr(ia)) {
|
|
|
|
+ lease_prune(lease, 0);
|
|
|
|
+ lease_prune(lease, 0);
|
|
|
|
+ lease_update_file(now);
|
|
|
|
+ lease_update_file(now);
|
|
|
|
|
|
|
|
+ lease_update_dns(0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ fclose(f);
|
|
|
|
+ fclose(f);
|
|
|
@ -263,4 +256,4 @@
|
|
|
|
+}
|
|
|
|
+}
|
|
|
|
+#endif /* HAVE_LEASEFILE_EXPIRE */
|
|
|
|
+#endif /* HAVE_LEASEFILE_EXPIRE */
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#endif /* HAVE_DHCP */
|
|
|
|
#endif /* HAVE_DHCP */
|
|
|
|