# HG changeset patch # User Pascal Bellard # Date 1507371045 -7200 # Node ID 95d7ed740572818371d788584977a4502c48988e # Parent 26f60e49e3d5f55c524019a7a58d6d0f0412cdc6 network.cgi: basic vlan support diff -r 26f60e49e3d5 -r 95d7ed740572 network.cgi --- a/network.cgi Sun Jul 23 13:53:37 2017 +0200 +++ b/network.cgi Sat Oct 07 12:10:45 2017 +0200 @@ -160,6 +160,17 @@ arp -i $(GET interface) -Ds $(GET ip) $(GET interface) pub ;; *\ toggleipforward\ *) echo $((1 - $(cat $ip_forward))) > $ip_forward ;; + *\ delvlan\ *) + vconfig rem $(GET vlan) ;; + *\ addvlan\ *) + grep -q '^8021q ' /proc/modules || modprobe 8021q + vlan=$(GET if).$(GET id) + prio=$(GET priority) + [ -e /proc/net/vlan/$vlan ] || vconfig add ${vlan/./ } + for i in $(seq 0 7); do + vconfig set_ingress_map $vlan $i ${prio:-$i} + vconfig set_egress_map $vlan $i ${prio:-$i} + done ;; esac case " $(POST) " in @@ -707,6 +718,65 @@ +EOT + devs="$(for i in $(sed '/:/!d;s/:.*//' /proc/net/dev); do + [ -e /proc/net/vlan/$i ] && continue + [ -e /sys/class/net/$i/flags ] || continue + [ $(($(cat /sys/class/net/$i/flags) & 0x1080)) -eq 4096 ] && + echo $i + done)" + if [ "$REMOTE_USER" == "root" -a -n "$devs" ]; then + cat < +
$(_ 'VLAN')
+
+
+EOT + vlans="$(ls /proc/net/vlan/ 2> /dev/null | sed '/config/d')" + if [ -n "$vlans" ]; then + cat < + + + $(_ 'Interface') + id + $(_ 'priority') + + + +EOT + for i in $vlans ; do + cat < + $i + $(sed '/VID/!d;s/.*VID: \([^ ]*\).*/\1/' /proc/net/vlan/$i) + $(sed '/EGRESS/!d;s/.*: 0:\([^: ]*\).*/\1/' /proc/net/vlan/$i) + + +EOT + done + cat < + + $(_ 'or') +EOT + fi + cat <$(_ 'Add') + $(_ 'on') id + + $(_ 'priority') + +
+ + +EOT + fi + cat <
$(_ 'Output of ifconfig')
@@ -746,9 +816,9 @@