X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=blobdiff_plain;f=config%2Fcfgroot%2Fnetwork-functions.pl;h=93b8190305abb93a7d29e0c8a117e22d7e46b6e9;hp=5f53704cd18e552ca4f12670f6bce91449b62b54;hb=dbfd2622f58727f4b0f9bed8934a770a2050491f;hpb=8bbcfa1152f87e8092c91284e25184ae52914e6d diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl index 5f53704cd1..93b8190305 100644 --- a/config/cfgroot/network-functions.pl +++ b/config/cfgroot/network-functions.pl @@ -315,6 +315,85 @@ sub setup_upstream_proxy() { } } +my %wireless_status = (); + +sub _get_wireless_status($) { + my $intf = shift; + + if (!$wireless_status{$intf}) { + $wireless_status{$intf} = `iwconfig $intf`; + } + + return $wireless_status{$intf}; +} + +sub wifi_get_essid($) { + my $status = &_get_wireless_status(shift); + + my ($essid) = $status =~ /ESSID:\"(.*)\"/; + + return $essid; +} + +sub wifi_get_frequency($) { + my $status = &_get_wireless_status(shift); + + my ($frequency) = $status =~ /Frequency:(\d+\.\d+ GHz)/; + + return $frequency; +} + +sub wifi_get_access_point($) { + my $status = &_get_wireless_status(shift); + + my ($access_point) = $status =~ /Access Point: ([0-9A-F:]+)/; + + return $access_point; +} + +sub wifi_get_bit_rate($) { + my $status = &_get_wireless_status(shift); + + my ($bit_rate) = $status =~ /Bit Rate=(\d+ [GM]b\/s)/; + + return $bit_rate; +} + +sub wifi_get_link_quality($) { + my $status = &_get_wireless_status(shift); + + my ($cur, $max) = $status =~ /Link Quality=(\d+)\/(\d+)/; + + return $cur * 100 / $max; +} + +sub wifi_get_signal_level($) { + my $status = &_get_wireless_status(shift); + + my ($signal_level) = $status =~ /Signal level=(\-\d+ dBm)/; + + return $signal_level; +} + +sub get_hardware_address($) { + my $ip_address = shift; + my $ret; + + open(FILE, "/proc/net/arp") or die("Could not read ARP table"); + + while () { + my ($ip_addr, $hwtype, $flags, $hwaddr, $mask, $device) = split(/\s+/, $_); + if ($ip_addr eq $ip_address) { + $ret = $hwaddr; + last; + } + } + + close(FILE); + + return $ret; +} + 1; # Remove the next line to enable the testsuite