]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
- Give the lease a binding state if it doesn't have one.
authorTed Lemon <source@isc.org>
Wed, 5 Jul 2000 07:32:13 +0000 (07:32 +0000)
committerTed Lemon <source@isc.org>
Wed, 5 Jul 2000 07:32:13 +0000 (07:32 +0000)
- Don't dereference events from parsed lease, since that lease is now
  kept.

server/confpars.c

index 503b570fba55855e4fb855593a5129e30a5fbb4f..356cc6a75adcd438bab1d74ff363c8f02860d25a 100644 (file)
@@ -43,7 +43,7 @@
 
 #ifndef lint
 static char copyright[] =
-"$Id: confpars.c,v 1.117 2000/06/12 20:14:16 mellon Exp $ Copyright (c) 1995-2000 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: confpars.c,v 1.118 2000/07/05 07:32:13 mellon Exp $ Copyright (c) 1995-2000 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -137,15 +137,6 @@ isc_result_t read_leases ()
                        struct lease *lease = (struct lease *)0;
                        if (parse_lease_declaration (&lease, cfile)) {
                                enter_lease (lease);
-                               if (lease -> on_expiry)
-                                       executable_statement_dereference
-                                               (&lease -> on_expiry, MDL);
-                               if (lease -> on_commit)
-                                       executable_statement_dereference
-                                               (&lease -> on_commit, MDL);
-                               if (lease -> on_release)
-                                       executable_statement_dereference
-                                               (&lease -> on_release, MDL);
                                lease_dereference (&lease, MDL);
                        } else
                                parse_warn (cfile,
@@ -2690,6 +2681,16 @@ int parse_lease_declaration (struct lease **lp, struct parse *cfile)
                        seenmask |= seenbit;
 
        } while (1);
+
+       /* If no binding state is specified, make one up. */
+       if (!(seenmask & 256)) {
+               if (lease -> ends > cur_time)
+                       lease -> binding_state = FTS_ACTIVE;
+               else
+                       lease -> binding_state = FTS_FREE;
+               lease -> next_binding_state = lease -> binding_state;
+       }
+
        lease_reference (lp, lease, MDL);
        lease_dereference (&lease, MDL);
        return 1;