From 3c2be83ea036f28d3d3d08e2f8326c62b1e42a78 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Fri, 28 Dec 2018 16:45:41 -0800 Subject: [PATCH] Also exclude leases that have replacements https://sourceforge.net/p/webadmin/bugs/5225/ --- dhcpd/list_leases.cgi | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/dhcpd/list_leases.cgi b/dhcpd/list_leases.cgi index fffcb7d9d..093b9e030 100755 --- a/dhcpd/list_leases.cgi +++ b/dhcpd/list_leases.cgi @@ -82,6 +82,20 @@ else { push(@leases, $lease); } + # Find leases which have been obsoleted by a more recent one, even if + # they are still valid + my %already; + foreach my $l (reverse(@leases)) { + my $client = &find('client-hostname', $l->{'members'}); + my $ch = $client ? $client->{'values'}->[0] : undef; + if ($already{$l->{'values'}->[0],$ch}++) { + $l->{'obsolete'} = 1; + } + } + if (!$in{'all'}) { + @leases = grep { !$_->{'obsolete'} } @leases; + } + # Show links to select mode, if not showing a single subnet if (!$in{'network'}) { @links = ( ); @@ -191,7 +205,8 @@ else { local $mems = $lease->{'members'}; local $starts = &find('starts', $mems); local $ends = &find('ends', $mems); - local $ht = $lease->{'expired'} ? "i" : "tt"; + local $ht = $lease->{'expired'} || + $lease->{'obsolete'} ? "i" : "tt"; push(@cols, "<$ht>$lease->{'values'}->[0]"); local $hard = &find('hardware', $mems); push(@cols,$hard->{'values'}->[1] ?