From b858a4778b855c6aa6ce03370ca0d3671273bd85 Mon Sep 17 00:00:00 2001 From: Cheer Xiao Date: Sun, 7 Apr 2013 20:16:44 +0800 Subject: [PATCH] getdata: treat binding states abandoned, expired and release like free --- src/defaults.h | 26 ++++++++++++++++---------- src/dhcpd-pools.h | 3 +++ src/getdata.c | 5 ++++- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/defaults.h b/src/defaults.h index 7b643ad..a865cf0 100644 --- a/src/defaults.h +++ b/src/defaults.h @@ -59,18 +59,24 @@ static const unsigned int SHARED_NETWORKS = 8192; * Please do not commit less readable indentation. */ static const char *prefixes[2][NUM_OF_PREFIX] = { [VERSION_4] = { - [PREFIX_LEASE] = "lease ", - [PREFIX_BINDING_STATE_FREE] = " binding state free", - [PREFIX_BINDING_STATE_ACTIVE] = " binding state active", - [PREFIX_BINDING_STATE_BACKUP] = " binding state backup", - [PREFIX_HARDWARE_ETHERNET] = " hardware ethernet" + [PREFIX_LEASE] = "lease ", + [PREFIX_BINDING_STATE_FREE] = " binding state free", + [PREFIX_BINDING_STATE_ABANDONED] = " binding state abandoned", + [PREFIX_BINDING_STATE_EXPIRED] = " binding state expired", + [PREFIX_BINDING_STATE_RELEASED] = " binding state released", + [PREFIX_BINDING_STATE_ACTIVE] = " binding state active", + [PREFIX_BINDING_STATE_BACKUP] = " binding state backup", + [PREFIX_HARDWARE_ETHERNET] = " hardware ethernet" }, [VERSION_6] = { - [PREFIX_LEASE] = " iaaddr ", - [PREFIX_BINDING_STATE_FREE] = " binding state free", - [PREFIX_BINDING_STATE_ACTIVE] = " binding state active", - [PREFIX_BINDING_STATE_BACKUP] = " binding state backup", - [PREFIX_HARDWARE_ETHERNET] = " hardware ethernet" + [PREFIX_LEASE] = " iaaddr ", + [PREFIX_BINDING_STATE_FREE] = " binding state free", + [PREFIX_BINDING_STATE_ABANDONED] = " binding state abandoned", + [PREFIX_BINDING_STATE_EXPIRED] = " binding state expired", + [PREFIX_BINDING_STATE_RELEASED] = " binding state released", + [PREFIX_BINDING_STATE_ACTIVE] = " binding state active", + [PREFIX_BINDING_STATE_BACKUP] = " binding state backup", + [PREFIX_HARDWARE_ETHERNET] = " hardware ethernet" } }; diff --git a/src/dhcpd-pools.h b/src/dhcpd-pools.h index 123b8db..0fb295c 100644 --- a/src/dhcpd-pools.h +++ b/src/dhcpd-pools.h @@ -85,6 +85,9 @@ enum dhcp_version { enum prefix_t { PREFIX_LEASE, PREFIX_BINDING_STATE_FREE, + PREFIX_BINDING_STATE_ABANDONED, + PREFIX_BINDING_STATE_EXPIRED, + PREFIX_BINDING_STATE_RELEASED, PREFIX_BINDING_STATE_ACTIVE, PREFIX_BINDING_STATE_BACKUP, PREFIX_HARDWARE_ETHERNET, diff --git a/src/getdata.c b/src/getdata.c index 1e081f9..ba50c3d 100644 --- a/src/getdata.c +++ b/src/getdata.c @@ -124,7 +124,10 @@ int parse_leases(void) parse_ipaddr(ipstring, &addr); continue; } - if (HAS_PREFIX(line, PREFIX_BINDING_STATE_FREE)) { + if (HAS_PREFIX(line, PREFIX_BINDING_STATE_FREE) || + HAS_PREFIX(line, PREFIX_BINDING_STATE_ABANDONED) || + HAS_PREFIX(line, PREFIX_BINDING_STATE_EXPIRED) || + HAS_PREFIX(line, PREFIX_BINDING_STATE_RELEASED)) { /* remove old entry, if exists */ if ((lease = find_lease(&addr)) != NULL) { delete_lease(lease);