forked from freifunk-franken/firmware
ETHPORT was used to configure devices with two physical ethernet ports, one of them being connected directly to the CPU, while the other one is connected to the internal switch of the platform. As the GL-AR150 has been converted to the TWO_PORT codepath and no other devices utilizes ETHPORT, remove all leftovers. Signed-off-by: Fabian Bläse <fabian@blaese.de> Tested-by: Sebastian Beck <freifunk@beibecks.de>
246 lines
8.9 KiB
HTML
Executable File
246 lines
8.9 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_reboot=1
|
|
MSG='<span class="green">Port Modus geändert! Router startet neu...</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_reboot=1
|
|
MSG='<span class="green">Port Modus geändert! Router startet neu...</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 />
|
|
Anschließend wird der Router neugestartet.
|
|
</td></tr>
|
|
</table>
|
|
</fieldset>
|
|
</td></tr>
|
|
<% fi %>
|
|
<% if grep -q "LAN0PORT" "/etc/network.$board_name" || grep -q "LAN1PORT" "/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 />
|
|
Anschließend wird der Router neugestartet.
|
|
</td></tr>
|
|
</table>
|
|
</fieldset>
|
|
</td></tr>
|
|
<% fi %>
|
|
</table>
|
|
</form>
|
|
<%in /www/include/footer %>
|
|
<%
|
|
# write
|
|
if [ "$do_reboot" = "1" ] ; then
|
|
reboot
|
|
fi
|
|
%>
|