getdata: treat binding states abandoned, expired and release like free

This commit is contained in:
Cheer Xiao 2013-04-07 20:16:44 +08:00
parent cdf2c81f31
commit b858a4778b
3 changed files with 23 additions and 11 deletions

View file

@ -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"
}
};

View file

@ -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,

View file

@ -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);