tazpanel rev 614

network.cgi: basic vlan support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Oct 07 12:10:45 2017 +0200 (2017-10-07)
parents 26f60e49e3d5
children 608186268f8e
files network.cgi
line diff
     1.1 --- a/network.cgi	Sun Jul 23 13:53:37 2017 +0200
     1.2 +++ b/network.cgi	Sat Oct 07 12:10:45 2017 +0200
     1.3 @@ -160,6 +160,17 @@
     1.4  		arp -i $(GET interface) -Ds $(GET ip) $(GET interface) pub ;;
     1.5  	*\ toggleipforward\ *)
     1.6  		echo $((1 - $(cat $ip_forward))) > $ip_forward ;;
     1.7 +	*\ delvlan\ *)
     1.8 +		vconfig rem $(GET vlan) ;;
     1.9 +	*\ addvlan\ *)
    1.10 +		grep -q '^8021q ' /proc/modules || modprobe 8021q
    1.11 +		vlan=$(GET if).$(GET id)
    1.12 +		prio=$(GET priority)
    1.13 +		[ -e /proc/net/vlan/$vlan ] || vconfig add ${vlan/./ }
    1.14 +		for i in $(seq 0 7); do
    1.15 +			vconfig set_ingress_map $vlan $i ${prio:-$i}
    1.16 +			vconfig set_egress_map $vlan $i ${prio:-$i}
    1.17 +		done ;;
    1.18  esac
    1.19  
    1.20  case " $(POST) " in
    1.21 @@ -707,6 +718,65 @@
    1.22  	</footer>
    1.23  </section>
    1.24  
    1.25 +EOT
    1.26 +		devs="$(for i in $(sed '/:/!d;s/:.*//' /proc/net/dev); do
    1.27 +			[ -e /proc/net/vlan/$i ] && continue
    1.28 +			[ -e /sys/class/net/$i/flags ] || continue
    1.29 +			[ $(($(cat /sys/class/net/$i/flags) & 0x1080)) -eq 4096 ] &&
    1.30 +			echo $i
    1.31 +		done)"
    1.32 +		if [ "$REMOTE_USER" == "root" -a -n "$devs" ]; then
    1.33 +			cat <<EOT
    1.34 +<section>
    1.35 +	<header id="vlan">$(_ 'VLAN')</header>
    1.36 +	<footer>
    1.37 +		<form>
    1.38 +EOT
    1.39 +			vlans="$(ls /proc/net/vlan/ 2> /dev/null | sed '/config/d')"
    1.40 +			if [ -n "$vlans" ]; then
    1.41 +				cat <<EOT
    1.42 +		<table class="wide zebra center">
    1.43 +			<thead>
    1.44 +				<tr>
    1.45 +					<td>$(_ 'Interface')</td>
    1.46 +					<td>id</td>
    1.47 +					<td>$(_ 'priority')</td>
    1.48 +				</tr>
    1.49 +			</thead>
    1.50 +			<tbody>
    1.51 +EOT
    1.52 +				for i in $vlans ; do
    1.53 +					cat <<EOT
    1.54 +			<tr>
    1.55 +			<td><input type="radio" name="vlan" value="$i"/>$i</td>
    1.56 +			<td>$(sed '/VID/!d;s/.*VID: \([^ ]*\).*/\1/' /proc/net/vlan/$i)</td>
    1.57 +			<td>$(sed '/EGRESS/!d;s/.*: 0:\([^: ]*\).*/\1/' /proc/net/vlan/$i)</td>
    1.58 +			<td></td>
    1.59 +			</tr>
    1.60 +EOT
    1.61 +				done
    1.62 +				cat <<EOT
    1.63 +			</tbody>
    1.64 +		</table>
    1.65 +		<button type="submit" data-icon="@remove@" name="delvlan">$(_ 'Remove')</button> $(_ 'or')
    1.66 +EOT
    1.67 +			fi
    1.68 +			cat <<EOT
    1.69 +			<button type="submit" data-icon="@add@" name="addvlan">$(_ 'Add')</button>
    1.70 +			$(_ 'on') <select name="if"> 
    1.71 +			$(for i in $devs; do echo "<option>$i</option>"; done)
    1.72 +			</select> id
    1.73 +			<input type="text" name="id" value="1" size="4" title="1..4095" />
    1.74 +			$(_ 'priority') <select name="prio">
    1.75 +			$(for i in $(seq 0 7); do echo "<option>$i</option>"; done)
    1.76 +			</select>
    1.77 +		</form>
    1.78 +	</footer>
    1.79 +</section>
    1.80 +
    1.81 +EOT
    1.82 +		fi
    1.83 +		cat <<EOT
    1.84  
    1.85  <section>
    1.86  	<header id="ifconfig">$(_ 'Output of ifconfig')</header>
    1.87 @@ -746,9 +816,9 @@
    1.88  	</table>
    1.89  	<footer>
    1.90  		<form>
    1.91 -			IP <input type="text" name="ip" value="10.20.30.40" size="12" /> on $(select_if)<!--
    1.92 +			IP <input type="text" name="ip" value="10.20.30.40" size="12" /> $(_ 'on') $(select_if)<!--
    1.93  			--><button type="submit" data-icon="@upgrade@" name="proxyarp">$(_ 'Proxy')</button>
    1.94 -			or <button type="submit" data-icon="@add@" name="addarp">$(_ 'Add')</button>
    1.95 +			$(_ 'or') <button type="submit" data-icon="@add@" name="addarp">$(_ 'Add')</button>
    1.96  			 MAC <input type="text" name="mac" value="11:22:33:44:55:66" size="16" />
    1.97  		</form>
    1.98  EOT