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. */ * Please do not commit less readable indentation. */
static const char *prefixes[2][NUM_OF_PREFIX] = { static const char *prefixes[2][NUM_OF_PREFIX] = {
[VERSION_4] = { [VERSION_4] = {
[PREFIX_LEASE] = "lease ", [PREFIX_LEASE] = "lease ",
[PREFIX_BINDING_STATE_FREE] = " binding state free", [PREFIX_BINDING_STATE_FREE] = " binding state free",
[PREFIX_BINDING_STATE_ACTIVE] = " binding state active", [PREFIX_BINDING_STATE_ABANDONED] = " binding state abandoned",
[PREFIX_BINDING_STATE_BACKUP] = " binding state backup", [PREFIX_BINDING_STATE_EXPIRED] = " binding state expired",
[PREFIX_HARDWARE_ETHERNET] = " hardware ethernet" [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] = { [VERSION_6] = {
[PREFIX_LEASE] = " iaaddr ", [PREFIX_LEASE] = " iaaddr ",
[PREFIX_BINDING_STATE_FREE] = " binding state free", [PREFIX_BINDING_STATE_FREE] = " binding state free",
[PREFIX_BINDING_STATE_ACTIVE] = " binding state active", [PREFIX_BINDING_STATE_ABANDONED] = " binding state abandoned",
[PREFIX_BINDING_STATE_BACKUP] = " binding state backup", [PREFIX_BINDING_STATE_EXPIRED] = " binding state expired",
[PREFIX_HARDWARE_ETHERNET] = " hardware ethernet" [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 { enum prefix_t {
PREFIX_LEASE, PREFIX_LEASE,
PREFIX_BINDING_STATE_FREE, PREFIX_BINDING_STATE_FREE,
PREFIX_BINDING_STATE_ABANDONED,
PREFIX_BINDING_STATE_EXPIRED,
PREFIX_BINDING_STATE_RELEASED,
PREFIX_BINDING_STATE_ACTIVE, PREFIX_BINDING_STATE_ACTIVE,
PREFIX_BINDING_STATE_BACKUP, PREFIX_BINDING_STATE_BACKUP,
PREFIX_HARDWARE_ETHERNET, PREFIX_HARDWARE_ETHERNET,

View file

@ -124,7 +124,10 @@ int parse_leases(void)
parse_ipaddr(ipstring, &addr); parse_ipaddr(ipstring, &addr);
continue; 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 */ /* remove old entry, if exists */
if ((lease = find_lease(&addr)) != NULL) { if ((lease = find_lease(&addr)) != NULL) {
delete_lease(lease); delete_lease(lease);