feature: Add function and code to UI code to prepare for changing interface names in the core OS.

Create get_interface which will lookup in the current uci network config the realname for the logical interface name.

When the interface is not found it will fall back to a hard coded list.

Configure the UI to use the new get_interface function.
This commit is contained in:
Conrad Lara - KG6JEI 2015-03-24 23:25:18 -07:00
parent 097d62ae01
commit 9444716fbd
7 changed files with 75 additions and 74 deletions

View File

@ -139,7 +139,8 @@ sub is_channel_valid
# We don't have the device band in the data file so lets fall back to checking manually
else {
my $channelok=0;
foreach (`iwinfo wlan0 freqlist`)
my $wifiintf = get_interface("wifi");
foreach (`iwinfo $wifiintf freqlist`)
{
next unless /Channel $channel/;
next if /\[restricted\]/;
@ -166,7 +167,8 @@ sub rf_channels_list
else
{
my %channels = ();
foreach (`iwinfo wlan0 freqlist` )
my $wifiintf = get_interface("wifi");
foreach (`iwinfo $wifiintf freqlist` )
{
next unless /([0-9]+.[0-9]+) GHz \(Channel ([0-9]+)\)/;
next if /\[restricted\]/;

View File

@ -47,7 +47,7 @@ $node = "NOCALL" if $node eq "";
$tactical = nvram_get("tactical");
$config = nvram_get("config");
$config = "not set" if $config eq "" or not -d "/etc/config.$config";
($my_ip) = get_ip4_network("wlan0");
($my_ip) = get_ip4_network(get_interface("wifi"));
read_postdata();

View File

@ -286,14 +286,7 @@ sub reboot_page
$link = "/cgi-bin/status" unless $link;
# is the browser coming from the lan?
if(system "ifconfig br-lan >/dev/null 2>&1")
{
($lanip, $lanmask, $junk, $lannet) = &get_ip4_network("eth0");
}
else
{
($lanip, $lanmask, $junk, $lannet) = &get_ip4_network("br-lan");
}
($lanip, $lanmask, $junk, $lannet) = &get_ip4_network(get_interface("lan"));
my($browser) = $ENV{REMOTE_ADDR} =~ /::ffff:([\d\.]+)/;
my $fromlan = validate_same_subnet($browser, $lanip, $lanmask);
$junk = ""; # dummy to avoid warning
@ -538,8 +531,8 @@ sub load_cfg
{
#my $mac2 = nvram_get("mac2");
my $node = nvram_get("node");
my $mac2 = mac2ip(get_mac("wlan0"), 0);
my $dtdmac = mac2ip(get_mac("eth0"), 0);
my $mac2 = mac2ip(get_mac(get_interface("wifi")), 0);
my $dtdmac = mac2ip(get_mac(get_interface("lan")), 0);
open(FILE, $_[0]) or return 0;
while(defined ($line = <FILE>))
{
@ -1280,7 +1273,8 @@ sub wifi_useschains
#has increased it to a higher level.
sub wifi_txpoweroffset
{
my $doesiwoffset=`iwinfo wlan0 info 2>/dev/null` =~ /TX power offset: (\d+)/;
my $wlanintf = get_interface("wifi");
my $doesiwoffset=`iwinfo $wlanintf info 2>/dev/null` =~ /TX power offset: (\d+)/;
if ( $doesiwoffset ) {
return $1;
} else
@ -1339,5 +1333,33 @@ sub page_footer
print "</div>"
}
sub get_interface
{
my ($intfname) = @_;
my $intfname = `uci -q get network.$intfname.ifname`;
chomp $intfname;
if ($intfname) {
return $intfname;
} else {
# Capture rules incase uci file is not in sync.
if ( $intfname eq "lan" )
{
return "eth0";
} elsif ( $intfname eq "wan" ){
return "eth0.1";
} elsif ( $intfname eq "wifi" ){
return "wlan0";
} elsif ( $intfname eq "dtdlink" ){
return "eth0.1";
} else {
# we have a problem
die("Unknown interface in call to get_interface");
}
}
}
#weird uhttpd/busybox error requires a 1 at the end of this file
1

View File

@ -75,14 +75,7 @@ else { $dmz_mode = 0 }
# get the network details of the lan interface for dhcp calculations
if(system "ifconfig br-lan >/dev/null 2>&1")
{
($lanip, $lanmask, $junk, $lannet, $lancidr) = get_ip4_network("eth0");
}
else
{
($lanip, $lanmask, $junk, $lannet, $lancidr) = get_ip4_network("br-lan");
}
($lanip, $lanmask, $junk, $lannet, $lancidr) = get_ip4_network(get_interface("lan"));
$lannet_d = ip2decimal($lannet);

View File

@ -130,8 +130,9 @@ $parms{dmz_dhcp_limit} = $dmz_dhcp_limit = $dmz_dhcp_end - $dmz_dhcp_start + 1;
unless($parms{reload})
{
($wifi_txpower) = `iwinfo wlan0 info 2>/dev/null` =~ /Tx-Power: (\d+)/;
(my $doesiwoffset) = `iwinfo wlan0 info 2>/dev/null` =~ /TX power offset: (\d+)/;
my $wifiintf = get_interface("wifi");
($wifi_txpower) = `iwinfo $wifiintf info 2>/dev/null` =~ /Tx-Power: (\d+)/;
(my $doesiwoffset) = `iwinfo $wifiintf info 2>/dev/null` =~ /TX power offset: (\d+)/;
if ( $doesiwoffset ) {
$wifi_txpower -= $1;
}
@ -173,6 +174,7 @@ $parms{wifi_rxant} = $wifi_rxant;
if($parms{button_apply} or $parms{button_save})
{
my $wifiintf = get_interface("wifi");
$cmd = "";
if(wifi_useschains()){
$cmd .= "echo $wifi_rxant > /sys/kernel/debug/ieee80211/phy0/ath9k/rx_chainmask;";
@ -185,7 +187,7 @@ if($parms{button_apply} or $parms{button_save})
$cmd .= "ifup wifi_mon >/dev/null 2>&1;";
}
$cmd .= "iw phy phy0 set distance $wifi_distance >/dev/null 2>&1;";
$cmd .= "iw dev wlan0 set txpower fixed ${wifi_txpower}00 >/dev/null 2>&1;";
$cmd .= "iw dev $wifiintf set txpower fixed ${wifi_txpower}00 >/dev/null 2>&1;";
system $cmd;
}

View File

@ -52,7 +52,7 @@ system "rm -f /tmp/web/siglevel" if $parms{start};
# get the current levels
($s, $n) = get_wifi_signal("wlan0");
($s, $n) = get_wifi_signal(get_interface("wifi"));
if($s eq "N/A") { $s = $n = "---" }
# load the previous levels

View File

@ -136,18 +136,16 @@ $browser_ip = "";
# left column - network interface info
if(system "ifconfig br-lan >/dev/null 2>&1") # lan not bridged
{
# show the wifi address
($ip, $mask, $bcast, $net, $cidr) = get_ip4_network("wlan0");
($ip, $mask, $bcast, $net, $cidr) = get_ip4_network(get_interface("wifi"));
$cidr = "/ $cidr" if $cidr;
$str = "<th align=right><nobr>WiFi address</nobr></th><td>$ip <small>$cidr</small><br>";
$str .= "<small><nobr>" . get_ip6_addr("wlan0") . "</nobr></small></td>";
$str .= "<small><nobr>" . get_ip6_addr(get_interface("wifi")) . "</nobr></small></td>";
push @col1, $str;
# find out if the browser is on this node's lan
# if not, hide the local network details
($ip, $mask, $bcast, $net, $cidr) = get_ip4_network("eth0");
($ip, $mask, $bcast, $net, $cidr) = get_ip4_network(get_interface("lan"));
if($ENV{REMOTE_ADDR} =~ /::ffff:([\d\.]+)/)
{
$browser_ip = $1;
@ -158,38 +156,22 @@ if(system "ifconfig br-lan >/dev/null 2>&1") # lan not bridged
{
$cidr = "/ $cidr" if $cidr;
$str = "<th align=right><nobr>LAN address</nobr></th><td>$ip <small>$cidr</small><br>";
$str .= "<small><nobr>" . get_ip6_addr("eth0") . "</nobr></small></td>";
$str .= "<small><nobr>" . get_ip6_addr(get_interface("lan")) . "</nobr></small></td>";
push @col1, $str;
}
}
else # lan is bridged
{
# show the wifi/lan bridge address unless the browser is on a different network
($ip, $mask, $bcast, $net, $cidr) = get_ip4_network("br-lan");
if($ENV{REMOTE_ADDR} =~ /::ffff:([\d\.]+)/)
{
$browser_ip = $1;
$hide_local = 1 unless validate_same_subnet($browser_ip, $ip, $mask);
}
unless($hide_local)
{
$cidr = "/ $cidr" if $cidr;
$str = "<th align=right><nobr>WiFi/LAN address</nobr></th><td>$ip <small>$cidr</small><br>";
$str .= "<small><nobr>" . get_ip6_addr("br-lan") . "</nobr></small></td>";
push @col1, $str;
}
}
if(not $hide_local and not system "ifconfig eth0.1 >/dev/null 2>&1")
my $wanintf = get_interface("wan");
if(not $hide_local and not system "ifconfig $wanintf >/dev/null 2>&1")
{
($ip, $mask, $bcast, $net, $cidr) = get_ip4_network("eth0.1");
($ip, $mask, $bcast, $net, $cidr) = get_ip4_network("$wanintf");
$cidr = "/ $cidr" if $cidr;
$cidr = "" unless $cidr;
$str = "<th align=right><nobr>WAN address</nobr></th><td>$ip <small>$cidr</small><br>";
$str .= "<small><nobr>" . get_ip6_addr("eth0.1") . "</nobr></small></td>";
$str .= "<small><nobr>" . get_ip6_addr("$wanintf") . "</nobr></small></td>";
push @col1, $str;
}
}
$ip = get_default_gw();
@ -232,7 +214,7 @@ if(-f "/tmp/olsrd.log")
if($config eq "mesh" or $config eq "client")
{
$str = "<th align=right valign=middle><nobr>Signal/Noise/Ratio</nobr></th><td valign=middle><nobr>";
($s, $n) = get_wifi_signal("wlan0");
($s, $n) = get_wifi_signal(get_interface("wifi"));
if($s eq "N/A") { $str .= "N/A" }
else { $str .= sprintf "<big><b>%d / %d / %d dB</b></big>", $s, $n, $s - $n }
$str .= "&nbsp;&nbsp;&nbsp;";