forked from freifunk-franken/firmware
Fabian Bläse
baca28ece3
Support for devices with two ports was originally intended for built-in
swconfig switches with only two externally exposed ethernet ports.
With the switch from ath71xx to ath79, the only device which ever made
use of this uncommon configuration (CPE210-v1) now has to dedicated
interfaces exposed to Linux. Therefore, two-port support was modified to
support two distinct interfaces instead of swconfig switch
configuration, which also simplified support for a few other devices.
However, the Web UI has not been taken into account. Due to the way the
Web UI detected a two-port device, the already implemented port selector
is not shown.
Use the TWO_PORT variable introduced with the change mentioned above to
detect two-port devices instead.
Fixes: #257
Fixes: c22032e254
("fff-network: support native two-port devices")
Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
244 lines
8.8 KiB
HTML
Executable File
244 lines
8.8 KiB
HTML
Executable File
#!/usr/bin/haserl
|
|
|
|
<%
|
|
board_name=$(uci -q get board.model.name)
|
|
# write
|
|
if [ "$REQUEST_METHOD" = "POST" ] ; then
|
|
if [ "$POST_change_mode" != "" ] ; then
|
|
sed -i '/^.*# set via WebUI/d' /etc/network.config
|
|
echo "ETHMODE=\"${POST_mode}\" # set via WebUI" >> /etc/network.config
|
|
sed -i '/^FORCEPARSE/d' /etc/network.config
|
|
echo "FORCEPARSE='2'" >> /etc/network.config
|
|
do_reconfigure=1
|
|
MSG='<span class="green">Port Modus wird geändert!</span>'
|
|
fi
|
|
if [ "$POST_change_twoport" != "" ] ; then
|
|
sed -i '/^.*# set via WebUI/d' /etc/network.config
|
|
echo "LAN0MODE=\"${POST_mode0}\" # set via WebUI" >> /etc/network.config
|
|
echo "LAN1MODE=\"${POST_mode1}\" # set via WebUI" >> /etc/network.config
|
|
sed -i '/^FORCEPARSE/d' /etc/network.config
|
|
echo "FORCEPARSE='2'" >> /etc/network.config
|
|
do_reconfigure=1
|
|
MSG='<span class="green">Port Modus wird geändert!</span>'
|
|
fi
|
|
fi
|
|
|
|
#helpers
|
|
format_state() {
|
|
batmanports=$(swconfig dev switch0 vlan 3 show | grep 'ports:')
|
|
clientports=$(swconfig dev switch0 vlan 1 show | grep 'ports:')
|
|
wanports=$(swconfig dev switch0 vlan 2 show | grep 'ports:')
|
|
|
|
if (echo "$clientports" | grep -q "${1}") && (echo "$batmanports" | grep -q "${1}") ; then
|
|
echo -n "<span class=\"assign\" style=\"color:black\">Multi-Link"
|
|
elif echo "$clientports" | grep -q "${1}" ; then
|
|
echo -n "<span class=\"assign\" style=\"color:orange\">CLIENT"
|
|
elif echo "$batmanports" | grep -q "${1}" ; then
|
|
echo -n "<span class=\"assign\" style=\"color:green\">BATMAN"
|
|
elif echo "$wanports" | grep -q "${1}" ; then
|
|
echo -n "<span class=\"assign\" style=\"color:blue\">WAN"
|
|
else
|
|
echo -n "<span class=\"assign\" style=\"color:red\">Unknown"
|
|
fi
|
|
echo "</span><br />"
|
|
}
|
|
format_port() {
|
|
port=$(echo "$1" | sed 's/.* port:\([^ ]*\) .*/\1/')
|
|
link=$(echo "$1" | sed 's/.* link:\([^ ]*\).*/\1/')
|
|
if [ "$link" = "up" ] ; then
|
|
speed=$(echo "$1" | sed 's/.* speed:\([^ ]*\).*/\1/')
|
|
duplex=$(echo "$1" | sed 's/.* \([^ ]*-duplex\).*/\1/')
|
|
else
|
|
speed="no link"
|
|
duplex=""
|
|
fi
|
|
echo "<img src=\"/port_${link}.png\" alt=\"${link}\" /><br /><br />"
|
|
format_state "${port}"
|
|
echo "<span class=\"stat\">$speed<br />$duplex</span><br /><br />"
|
|
|
|
swconfig dev switch0 show | grep -E "VLAN\s[0-9]+:[ \t]*$" | while read line ; do
|
|
vid=$(echo "$line" | sed 's/.*VLAN \([^:]*\).*/\1/')
|
|
vports=$(swconfig dev switch0 vlan "$vid" show | grep 'ports:')
|
|
if echo "$vports" | grep -q "${port}t" ; then
|
|
echo "<span class=\"vassign\">tagged</span><br />"
|
|
elif echo "$vports" | grep -q "${port}" ; then
|
|
echo "<span class=\"vassign\">untagged</span><br />"
|
|
else
|
|
echo "<span class=\"vassign\">-</span><br />"
|
|
fi
|
|
done
|
|
}
|
|
|
|
|
|
%>
|
|
<%in /www/include/header %>
|
|
<%in /www/include/helpers %>
|
|
<% show_msg %>
|
|
<form method="post">
|
|
<table style="width: 100%;">
|
|
<% if swconfig list | grep -q switch0 ; then %>
|
|
<%# Device has a switch %>
|
|
<tr><td>
|
|
<fieldset>
|
|
<legend>Switch</legend>
|
|
<table>
|
|
<tr>
|
|
<%
|
|
echo "<td class=\"swport\" style=\"vertical-align:bottom\">"
|
|
swconfig dev switch0 show | grep -E "VLAN\s[0-9]+:[ \t]*$" | while read line ; do
|
|
vid=$(echo "$line" | sed 's/.*VLAN \([^:]*\).*/\1/')
|
|
echo "<span class=\"vassign\" style=\"font-weight:bold;font-style:italic\">VLAN $vid </span><br />"
|
|
done
|
|
echo "</td>"
|
|
echo "<td class=\"swport\" style=\"width:2em\"></td>"
|
|
|
|
if [ ! "$(awk -F= '/WANDEV=/ { print $2 }' /etc/network.$board_name)" = "$(awk -F= '/SWITCHDEV=/ { print $2 }' /etc/network.$board_name)" ] ; then
|
|
wanif=$(uci -q get network.wan.ifname)
|
|
link=$(cat /sys/class/net/${wanif}/operstate)
|
|
if [ "$link" = "up" ] ; then
|
|
speed="connected"
|
|
else
|
|
speed="no link"
|
|
fi
|
|
echo "<td class=\"swport\">"
|
|
echo "<span class=\"port\" style=\"color:blue\">WAN-Port</span><br />"
|
|
echo "<img src=\"/port_${link}.png\" alt=\"${link}\" /><br /><br />"
|
|
echo "<span class=\"assign\" style=\"color:blue\">WAN</span><br />"
|
|
echo "<span class=\"stat\">$speed</span>"
|
|
echo "</td>"
|
|
fi
|
|
|
|
. /lib/functions/fff/portorder
|
|
portorder=$(get_port_order)
|
|
for internalport in $portorder
|
|
do
|
|
line=$(swconfig dev switch0 port "$internalport" show | tr -d '\n' | tr -d '\t')
|
|
port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/')
|
|
echo "<td class=\"swport\">"
|
|
echo "<span class=\"port\">Port #${port}</span><br />"
|
|
format_port "${line}"
|
|
echo "</td>"
|
|
done
|
|
if [ -n "$portorder" ] ; then
|
|
echo "<td class=\"swport\" style=\"width:4em\"></td>"
|
|
fi
|
|
|
|
swconfig dev switch0 show | grep "\t*link:" | while read line ; do
|
|
line=$(echo "$line" | tr -d '\n' | tr -d '\t')
|
|
port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/')
|
|
if echo "$portorder" | grep -q "$port" ; then
|
|
continue
|
|
fi
|
|
echo "<td class=\"swport\">"
|
|
echo "<span class=\"port\">Port #${port}</span><br />"
|
|
format_port "${line}"
|
|
echo "</td>"
|
|
done
|
|
%>
|
|
</tr>
|
|
</table>
|
|
<table>
|
|
<tr><td></td></tr>
|
|
<tr><td>
|
|
<% if [ -n "$portorder" ] ; then %>
|
|
Dies zeigt die tatsächliche Zuordnung der Ports, wobei der WAN Port auf der linken Seite liegt. Die Nummerierung entspricht der internen Zuordnung!<br />
|
|
<% else %>
|
|
Die Nummerierung und Reihenfolge der Ports entspricht nicht notwendigerweise der der Netzwerkanschlüsse am Router!<br />
|
|
<% fi %>
|
|
Einer (oder mehrere) der Ports sind keine Netzwerkanschlüsse am Router sondern binden die Router CPU an den internen Switch an.
|
|
</td></tr>
|
|
</table>
|
|
</fieldset>
|
|
</td></tr>
|
|
<% fi %>
|
|
<% if grep -q "ONE_PORT" "/etc/network.$board_name" ; then %>
|
|
<%
|
|
# Device has a port set by $ETHMODE
|
|
. /etc/network.mode
|
|
. /etc/network.config
|
|
%>
|
|
<tr><td>
|
|
<fieldset>
|
|
<legend>Ethernet Anschluss</legend>
|
|
<table>
|
|
<tr>
|
|
<th style="width: 1em;">Anschluss Modus:</th>
|
|
<td>
|
|
<select name="mode">
|
|
<option value="BATMAN" <% [ "$ETHMODE" = "BATMAN" ] && echo -n 'selected="selected" ' %>>BATMAN</option>
|
|
<option value="CLIENT" <% [ "$ETHMODE" = "CLIENT" ] && echo -n 'selected="selected" ' %>>CLIENT</option>
|
|
<% if grep -q "ONE_PORT" "/etc/network.$board_name" ; then %>
|
|
<option value="WAN" <% [ "$ETHMODE" = "WAN" ] && echo -n 'selected="selected" ' %>>WAN</option>
|
|
<% fi %>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr><td colspan="2"><input type="submit" name="change_mode" /></td></tr>
|
|
<tr><td colspan="2"></td></tr>
|
|
<tr><td colspan="2">
|
|
WAN: Knoten stellt über Ethernet Anschluss Verbindung zum Internet her.<br />
|
|
Client: Normale Clients stellen über Ethernet Anschluss des Knotens Verbindung zum Freifunk Netz her.<br />
|
|
BATMAN: Knoten stellt über Ethernet Anschluss Verbindung zu anderen MESH Knoten her.<br /><br />
|
|
|
|
Wenn diese Einstellung verändert wird, wird eine evtl. vorhandene manuelle Netzwerkkonfiguration in der
|
|
<tt>/etc/config/network</tt> überschrieben.<br />
|
|
</td></tr>
|
|
</table>
|
|
</fieldset>
|
|
</td></tr>
|
|
<% fi %>
|
|
<% if grep -q "TWO_PORT" "/etc/network.$board_name" ; then %>
|
|
<%
|
|
# Device has two ports
|
|
. /etc/network.mode
|
|
. /etc/network.config
|
|
%>
|
|
<tr><td>
|
|
<fieldset>
|
|
<legend>Ethernet Anschlüsse</legend>
|
|
<table>
|
|
<tr>
|
|
<th style="width: 15em;text-align:left">Modus Anschluss 0:</th>
|
|
<th style="width: 15em;text-align:left">Modus Anschluss 1:</th>
|
|
<th></th>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<select name="mode0">
|
|
<option value="BATMAN" <% [ "$LAN0MODE" = "BATMAN" ] && echo -n 'selected="selected" ' %>>BATMAN</option>
|
|
<option value="CLIENT" <% [ "$LAN0MODE" = "CLIENT" ] && echo -n 'selected="selected" ' %>>CLIENT</option>
|
|
<option value="WAN" <% [ "$LAN0MODE" = "WAN" ] && echo -n 'selected="selected" ' %>>WAN</option>
|
|
</select>
|
|
</td>
|
|
<td>
|
|
<select name="mode1">
|
|
<option value="BATMAN" <% [ "$LAN1MODE" = "BATMAN" ] && echo -n 'selected="selected" ' %>>BATMAN</option>
|
|
<option value="CLIENT" <% [ "$LAN1MODE" = "CLIENT" ] && echo -n 'selected="selected" ' %>>CLIENT</option>
|
|
<option value="WAN" <% [ "$LAN1MODE" = "WAN" ] && echo -n 'selected="selected" ' %>>WAN</option>
|
|
</select>
|
|
</td>
|
|
<td><input type="submit" name="change_twoport" /></td>
|
|
</tr>
|
|
<tr><td colspan="3"></td></tr>
|
|
<tr><td colspan="3">
|
|
WAN: Knoten stellt über Ethernet Anschluss Verbindung zum Internet her.<br />
|
|
Client: Normale Clients stellen über Ethernet Anschluss des Knotens Verbindung zum Freifunk Netz her.<br />
|
|
BATMAN: Knoten stellt über Ethernet Anschluss Verbindung zu anderen MESH Knoten her.<br /><br />
|
|
|
|
Wenn diese Einstellung verändert wird, wird eine evtl. vorhandene manuelle Netzwerkkonfiguration in der
|
|
<tt>/etc/config/network</tt> überschrieben.<br />
|
|
</td></tr>
|
|
</table>
|
|
</fieldset>
|
|
</td></tr>
|
|
<% fi %>
|
|
</table>
|
|
</form>
|
|
<%in /www/include/footer %>
|
|
<%
|
|
# write
|
|
if [ "$do_reconfigure" = "1" ] ; then
|
|
configurenetwork
|
|
fi
|
|
%>
|