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

View File

@ -47,7 +47,7 @@ $node = "NOCALL" if $node eq "";
$tactical = nvram_get("tactical"); $tactical = nvram_get("tactical");
$config = nvram_get("config"); $config = nvram_get("config");
$config = "not set" if $config eq "" or not -d "/etc/config.$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(); read_postdata();

View File

@ -286,14 +286,7 @@ sub reboot_page
$link = "/cgi-bin/status" unless $link; $link = "/cgi-bin/status" unless $link;
# is the browser coming from the lan? # is the browser coming from the lan?
if(system "ifconfig br-lan >/dev/null 2>&1") ($lanip, $lanmask, $junk, $lannet) = &get_ip4_network(get_interface("lan"));
{
($lanip, $lanmask, $junk, $lannet) = &get_ip4_network("eth0");
}
else
{
($lanip, $lanmask, $junk, $lannet) = &get_ip4_network("br-lan");
}
my($browser) = $ENV{REMOTE_ADDR} =~ /::ffff:([\d\.]+)/; my($browser) = $ENV{REMOTE_ADDR} =~ /::ffff:([\d\.]+)/;
my $fromlan = validate_same_subnet($browser, $lanip, $lanmask); my $fromlan = validate_same_subnet($browser, $lanip, $lanmask);
$junk = ""; # dummy to avoid warning $junk = ""; # dummy to avoid warning
@ -538,8 +531,8 @@ sub load_cfg
{ {
#my $mac2 = nvram_get("mac2"); #my $mac2 = nvram_get("mac2");
my $node = nvram_get("node"); my $node = nvram_get("node");
my $mac2 = mac2ip(get_mac("wlan0"), 0); my $mac2 = mac2ip(get_mac(get_interface("wifi")), 0);
my $dtdmac = mac2ip(get_mac("eth0"), 0); my $dtdmac = mac2ip(get_mac(get_interface("lan")), 0);
open(FILE, $_[0]) or return 0; open(FILE, $_[0]) or return 0;
while(defined ($line = <FILE>)) while(defined ($line = <FILE>))
{ {
@ -1280,7 +1273,8 @@ sub wifi_useschains
#has increased it to a higher level. #has increased it to a higher level.
sub wifi_txpoweroffset 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 ) { if ( $doesiwoffset ) {
return $1; return $1;
} else } else
@ -1339,5 +1333,33 @@ sub page_footer
print "</div>" 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 #weird uhttpd/busybox error requires a 1 at the end of this file
1 1

View File

@ -75,14 +75,7 @@ else { $dmz_mode = 0 }
# get the network details of the lan interface for dhcp calculations # 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(get_interface("lan"));
{
($lanip, $lanmask, $junk, $lannet, $lancidr) = get_ip4_network("eth0");
}
else
{
($lanip, $lanmask, $junk, $lannet, $lancidr) = get_ip4_network("br-lan");
}
$lannet_d = ip2decimal($lannet); $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}) unless($parms{reload})
{ {
($wifi_txpower) = `iwinfo wlan0 info 2>/dev/null` =~ /Tx-Power: (\d+)/; my $wifiintf = get_interface("wifi");
(my $doesiwoffset) = `iwinfo wlan0 info 2>/dev/null` =~ /TX power offset: (\d+)/; ($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 ) { if ( $doesiwoffset ) {
$wifi_txpower -= $1; $wifi_txpower -= $1;
} }
@ -173,6 +174,7 @@ $parms{wifi_rxant} = $wifi_rxant;
if($parms{button_apply} or $parms{button_save}) if($parms{button_apply} or $parms{button_save})
{ {
my $wifiintf = get_interface("wifi");
$cmd = ""; $cmd = "";
if(wifi_useschains()){ if(wifi_useschains()){
$cmd .= "echo $wifi_rxant > /sys/kernel/debug/ieee80211/phy0/ath9k/rx_chainmask;"; $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 .= "ifup wifi_mon >/dev/null 2>&1;";
} }
$cmd .= "iw phy phy0 set distance $wifi_distance >/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; system $cmd;
} }

View File

@ -52,7 +52,7 @@ system "rm -f /tmp/web/siglevel" if $parms{start};
# get the current levels # 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 = "---" } if($s eq "N/A") { $s = $n = "---" }
# load the previous levels # load the previous levels

View File

@ -136,61 +136,43 @@ $browser_ip = "";
# left column - network interface info # 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(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(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(get_interface("lan"));
if($ENV{REMOTE_ADDR} =~ /::ffff:([\d\.]+)/)
{ {
# show the wifi address $browser_ip = $1;
($ip, $mask, $bcast, $net, $cidr) = get_ip4_network("wlan0"); $hide_local = 1 unless validate_same_subnet($browser_ip, $ip, $mask);
$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>";
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");
if($ENV{REMOTE_ADDR} =~ /::ffff:([\d\.]+)/)
{
$browser_ip = $1;
$hide_local = 1 unless validate_same_subnet($browser_ip, $ip, $mask);
}
if($ip =~ /^10\./ or not $hide_local)
{
$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>";
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") if($ip =~ /^10\./ or not $hide_local)
{ {
($ip, $mask, $bcast, $net, $cidr) = get_ip4_network("eth0.1");
$cidr = "/ $cidr" if $cidr; $cidr = "/ $cidr" if $cidr;
$cidr = "" unless $cidr; $str = "<th align=right><nobr>LAN address</nobr></th><td>$ip <small>$cidr</small><br>";
$str = "<th align=right><nobr>WAN address</nobr></th><td>$ip <small>$cidr</small><br>"; $str .= "<small><nobr>" . get_ip6_addr(get_interface("lan")) . "</nobr></small></td>";
$str .= "<small><nobr>" . get_ip6_addr("eth0.1") . "</nobr></small></td>";
push @col1, $str; push @col1, $str;
} }
{
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("$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("$wanintf") . "</nobr></small></td>";
push @col1, $str;
}
}
$ip = get_default_gw(); $ip = get_default_gw();
if($ip =~ /^10\./ or not $hide_local) if($ip =~ /^10\./ or not $hide_local)
@ -232,7 +214,7 @@ if(-f "/tmp/olsrd.log")
if($config eq "mesh" or $config eq "client") if($config eq "mesh" or $config eq "client")
{ {
$str = "<th align=right valign=middle><nobr>Signal/Noise/Ratio</nobr></th><td valign=middle><nobr>"; $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" } if($s eq "N/A") { $str .= "N/A" }
else { $str .= sprintf "<big><b>%d / %d / %d dB</b></big>", $s, $n, $s - $n } else { $str .= sprintf "<big><b>%d / %d / %d dB</b></big>", $s, $n, $s - $n }
$str .= "&nbsp;&nbsp;&nbsp;"; $str .= "&nbsp;&nbsp;&nbsp;";