summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2008-05-15 14:25:55 -0700
committerStephen Hemminger <stephen.hemminger@vyatta.com>2008-05-15 14:25:55 -0700
commit38250dafc448bbb5f12e1a02d39f8ab3acab8ccb (patch)
tree000937b516903ea8141805ca11f9ce82f5bc626f /scripts
parent4ecc7a1239851a48d10f85653ab02cb4e1cb87e9 (diff)
downloadvyatta-op-38250dafc448bbb5f12e1a02d39f8ab3acab8ccb.tar.gz
vyatta-op-38250dafc448bbb5f12e1a02d39f8ab3acab8ccb.zip
Use perl to read sysfs directly
No need to use cat command to read file, just use perl file i/o
Diffstat (limited to 'scripts')
-rw-r--r--scripts/vyatta-show-interfaces.pl17
1 files changed, 14 insertions, 3 deletions
diff --git a/scripts/vyatta-show-interfaces.pl b/scripts/vyatta-show-interfaces.pl
index 7cacb57..9046c17 100644
--- a/scripts/vyatta-show-interfaces.pl
+++ b/scripts/vyatta-show-interfaces.pl
@@ -107,12 +107,23 @@ sub get_intf_description {
}
}
+sub get_sysfs_value {
+ my ($intf, $name) = @_;
+
+ open (my $statf, '<', "/sys/class/net/$intf/$name")
+ or die "Can't open statistics file /sys/class/net/$intf/$name";
+
+ my $value = <$statf>;
+ close $statf;
+ return $value;
+}
+
sub get_intf_stats {
my $intf = shift;
my %stats = ();
foreach my $var (@rx_stat_vars, @tx_stat_vars) {
- $stats{$var} = `cat /sys/class/net/$intf/statistics/$var`;
+ $stats{$var} = get_sysfs_value($intf, "statistics/$var");
}
return %stats;
}
@@ -176,8 +187,8 @@ sub get_state_link {
my $IFF_UP = 0x1;
my ($state, $link);
- my $flags = `cat /sys/class/net/$intf/flags 2> /dev/null`;
- my $carrier = `cat /sys/class/net/$intf/carrier 2> /dev/null`;
+ my $flags = get_sysfs_value($intf, 'flags');
+ my $carrier = get_sysfs_value($intf, 'carrier');
chomp $flags; chomp $carrier;
my $hex_flags = hex($flags);
if ($hex_flags & $IFF_UP) {