From ebca7579f5d946d1e5d81c3c4ddc338dda0f7939 Mon Sep 17 00:00:00 2001
From: Christopher LILJENSTOLPE <vyatta@cdl.asgaard.org>
Date: Mon, 10 Mar 2008 11:11:29 -0700
Subject: Fix 2965: IPv6 Interface information not shown in show interfaces

---
 scripts/vyatta-show-interfaces.pl | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

(limited to 'scripts')

diff --git a/scripts/vyatta-show-interfaces.pl b/scripts/vyatta-show-interfaces.pl
index 15a411b..4376fc0 100644
--- a/scripts/vyatta-show-interfaces.pl
+++ b/scripts/vyatta-show-interfaces.pl
@@ -30,6 +30,7 @@ use lib "/opt/vyatta/share/perl5/";
 use VyattaConfig;
 use Getopt::Long;
 use POSIX;
+use NetAddr::IP;
 
 use strict;
 use warnings;
@@ -157,11 +158,15 @@ sub get_ipaddr {
     my $intf = shift;
     
     my @addr_list = ();
-    my @lines = `ip addr show $intf | grep 'inet '`;
+    my @lines = `ip addr show $intf | grep 'inet' | grep -iv 'fe80'`;
     foreach my $line (@lines) {
-	if ($line =~ m/inet (\d+\.\d+\.\d+\.\d+)\/(\d+)/) {
-	    push @addr_list, "$1/$2";
-	}
+	(my $inet, my $addr, my $remainder) = split(' ', $line, 3);
+	my $ip = new NetAddr::IP($addr);
+	if ($ip->version() == 6) {
+	    push @addr_list, $ip->short() . '/' . $ip->masklen();
+	} else {
+	    push @addr_list, $ip->cidr();
+ 	}
     }
     chomp  @addr_list;
     return @addr_list;
-- 
cgit v1.2.3