diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-08-04 08:53:17 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-08-04 08:53:17 +0200 |
commit | 37f55704b56cfadf0fd21cfaf0fda8a2c7bd58a9 (patch) | |
tree | 49378b9ea49adf5130c7ad8ec4627105b77bd172 | |
parent | 66ae0d9cb9556abdae78527714e8ec8d11bf47e5 (diff) | |
download | vyatta-op-37f55704b56cfadf0fd21cfaf0fda8a2c7bd58a9.tar.gz vyatta-op-37f55704b56cfadf0fd21cfaf0fda8a2c7bd58a9.zip |
T1287: wide-dhcp6c does not support a "show dhcpv6 client leases" command
-rw-r--r-- | scripts/dhcpv6-client-show-leases.pl | 209 | ||||
-rw-r--r-- | templates/show/dhcpv6/client/leases/node.def | 3 | ||||
-rw-r--r-- | templates/show/dhcpv6/client/node.def | 1 |
3 files changed, 0 insertions, 213 deletions
diff --git a/scripts/dhcpv6-client-show-leases.pl b/scripts/dhcpv6-client-show-leases.pl deleted file mode 100644 index 761a3e6..0000000 --- a/scripts/dhcpv6-client-show-leases.pl +++ /dev/null @@ -1,209 +0,0 @@ -#!/usr/bin/perl - -# Module: dhcpv6-client-show-leases.pl -# -# **** License **** -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# A copy of the GNU General Public License is available as -# `/usr/share/common-licenses/GPL' in the Debian GNU/Linux distribution -# or on the World Wide Web at `http://www.gnu.org/copyleft/gpl.html'. -# You can also obtain it by writing to the Free Software Foundation, -# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, -# MA 02110-1301, USA. -# -# This code was originally developed by Vyatta, Inc. -# Portions created by Vyatta are Copyright (C) 2010 Vyatta, Inc. -# All Rights Reserved. -# -# Author: Bob Gilligan -# Date: April 2010 -# Description: Script to display DHCPv6 client leases in a user-friendly form -# -# **** End License **** - -use strict; -use lib "/opt/vyatta/share/perl5/"; - -use Getopt::Long; -use Vyatta::Config; - - -# Globals -my $debug_flag = 0; - -GetOptions( - "debug" => \$debug_flag, - ); - - -sub log_msg { - my $message = shift; - - print "DEBUG: $message" if $debug_flag; -} - - -# -# Main section. -# - -opendir (my $dir, "/var/lib/dhcp"); -my @lease_files; -while (my $f = readdir $dir) { - if ($f =~ /^dhclient_v6_(\w+).leases$/) { - push (@lease_files, $f); - } -} -closedir $dir; - -if ($debug_flag) { - print "lease files:", join(' ',@lease_files), "\n"; -} - -# Holds the most recent (last) entry for each interface -my %ghash = (); - -foreach my $lease_filename (@lease_files) { - my @lines=(); - - open(my $f, '<', "/var/lib/dhcp/$lease_filename") - or die "Can't open lease file for reading: $lease_filename\n"; - - @lines = <$f>; - close $f; - chomp @lines; - - my $level = 0; - my $s1; - my $s2; - my $ia_na; - my $iaaddr; - my $ends_day; - my $ends_time; - my $ifname; - my $starts; - my $pref_life; - my $max_life; - my $binding_state; - - # Parse the leases file into a hash keyed by IPv6 addr. - foreach my $line (@lines) { - log_msg("Line: $line\n"); - if ($line =~ /^lease6 \{/) { - if ($level != 0) { - printf("Found lease6 at level $level\n"); - exit 1; - } - $level++; - } elsif ($line =~ /^.*ia-na .*\{/) { - if ($level != 1) { - printf("Found ia-na at level $level\n"); - exit 1; - } - log_msg("setting ia_na\n"); - ($s1, $ia_na, $s2) = split(' ', $line); - $level++; - } elsif ($line =~ /^.*interface /) { - if ($level != 1) { - printf("Found interface at level $level\n"); - exit 1; - } - ($s1, $ifname) = split(' ', $line); - $ifname =~ s/;//; - $ifname =~ s/\"//g; - log_msg("Setting ifname to $ifname\n"); - } elsif ($line =~ /^.*iaaddr .*\{/) { - if ($level != 2) { - printf("Found iaaddr at level $level\n"); - exit 1; - } - ($s1, $iaaddr, $s2) = split(' ', $line); - log_msg("Setting iaaddr to $iaaddr.\n"); - log_msg("s1 $s1 s2 $s2\n"); - $level++; - } elsif ($line =~ /^.*starts /) { - ($s1, $starts) = split(' ', $line); - $starts =~ s/;//; - } elsif ($line =~ /^.*preferred-life /) { - ($s1, $pref_life) = split(' ', $line); - $pref_life =~ s/;//; - } elsif ($line =~ /^.*max-life /) { - ($s1, $max_life) = split(' ', $line); - $max_life =~ s/;//; - } elsif ($line =~ /^.*ends /) { - if ($level != 2) { - printf("Found ends at level $level\n"); - exit 1; - } - log_msg("Setting ends_day ends_time\n"); - ($s1, $s2, $ends_day, $ends_time) = split(' ', $line); - $ends_time =~ s/;//; - } elsif ($line =~ /^.*binding state /) { - if ($level != 2) { - printf("Found binding state at level $level\n"); - exit 1; - } - log_msg("Setting binding state\n"); - ($s1, $s2, $binding_state) = split(' ', $line); - $binding_state =~ s/;//; - } elsif ($line =~ /^.*\{/) { - log_msg("Unknown clause: $line\n"); - $level++; - } elsif ($line =~ /\}$/) { - $level--; - if ($level == 0) { - if (!defined($ia_na)) { - printf("ia_na not defined\n"); - exit 1; - } - - if (!defined($iaaddr)) { - printf("iaaddr not defined\n"); - exit 1; - } - } - } else { - log_msg("Unknown parameter: $line\n"); - } - } - - my @array = ($ia_na, $iaaddr, $starts, $max_life, $pref_life); - $ghash{$ifname} = \@array; -} - -# Display the leases... - -my $num_entries = scalar(keys %ghash); -if ($num_entries == 0) { - printf("There are no DHCPv6 leases.\n"); - exit 0; -} else { - printf("DHCPv6 client leases:\n"); -} - -printf("\n"); -printf("Interface IPv6 Address Expires\n"); -printf("--------- --------------------------------------- ------------------------\n"); -foreach my $key (keys %ghash) { - my $entry = $ghash{$key}; - my ($ia_na, $iaaddr, $starts, $max_life, $pref_life) = @$entry; - my $ts; - if (defined ($starts) && defined ($max_life)) { - my $exp_time = $starts + $max_life; - $ts = localtime($exp_time); - } else { - $ts = "Unknown"; - } - printf ("%-9s %-39s %s\n", $key, $iaaddr, $ts); -} - - - diff --git a/templates/show/dhcpv6/client/leases/node.def b/templates/show/dhcpv6/client/leases/node.def deleted file mode 100644 index 8eb6954..0000000 --- a/templates/show/dhcpv6/client/leases/node.def +++ /dev/null @@ -1,3 +0,0 @@ -help: Display DHCPv6 client leases - -run: sudo /opt/vyatta/sbin/dhcpv6-client-show-leases.pl diff --git a/templates/show/dhcpv6/client/node.def b/templates/show/dhcpv6/client/node.def deleted file mode 100644 index 7c5b0c3..0000000 --- a/templates/show/dhcpv6/client/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Display DHCPv6 client information |