[PATCH] show_info: Add extended switch scheme and bandwidth control

Tim Niemeyer tim at tn-x.org
So Aug 20 14:23:44 CEST 2017


Hi

Und applied.

Tim

Am Sonntag, den 20.08.2017, 13:13 +0200 schrieb Christian Dresel:
> hi
> 
> das Ding hat mich erstmal geschockt weil es auf meinen Test wdr4900
> mit
> alten OpenWRT nicht ging. Habs dann nochmal auf einen LEDE wdr4900
> getestet und da tut es. Sieht klasse aus, so langsam freunde ich mich
> vielleicht doch an das Script an wenn auch bei vielen VLANs etwas
> unübersichtlich:
> 
> -> SWITCH (interne logische Portreihenfolge)
> VLAN-
> IDs:                                             1  2  3  4  5  6
> 7  8  9  10 11 12 13 14 15 16
> 
> 
> Port #0:  up   - Multi-Link @ 1000baseT full-
> duplex   t  t  t  t  t  t
> t  t  t  t  t  t  t  t  t  t
> Port #1:  down - CLIENT     @ no
> link                 u  -  -  -  -  -
> -  -  -  -  -  -  -  -  -  -
> Port #2:  down - Multi-Link @ no
> link                 t  -  u  -  -  -
> -  -  -  -  -  -  -  -  -  -
> Port #3:  down - Multi-Link @ no
> link                 t  -  u  -  -  -
> -  -  -  -  -  -  -  -  -  -
> Port #4:  up   - CLIENT     @ 100baseT full
> -duplex    u  -  -  t  t  t
> t  t  t  t  t  t  t  t  t  t
> Port #5:  up   - CLIENT     @ 1000baseT full
> -duplex   u  -  -  t  t  t
> t  t  t  t  t  t  t  t  t  t
> Port #6:  down - Unknown    @ no
> link                 -  -  -  -  -  -
> -  -  -  -  -  -  -  -  -  -
> 
> ist aber vermutlich ja nicht die Regel. Ich hab es jetzt nur ohne
> Portorder getestet:
> 
> Reviewed-by: Christian Dresel <fff at chrisi01.de>
> 
> mfg
> 
> Christian
> 
> On 09.08.2017 23:38, Adrian Schmutzler wrote:
> > Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> > 
> > Tested-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> > ---
> >  .../fff/fff-support/files/usr/sbin/show_info       | 119
> > ++++++++++++++++++---
> >  1 file changed, 103 insertions(+), 16 deletions(-)
> > 
> > diff --git a/src/packages/fff/fff-support/files/usr/sbin/show_info
> > b/src/packages/fff/fff-support/files/usr/sbin/show_info
> > index 17fbb9f..fc7cffb 100755
> > --- a/src/packages/fff/fff-support/files/usr/sbin/show_info
> > +++ b/src/packages/fff/fff-support/files/usr/sbin/show_info
> > @@ -3,6 +3,8 @@
> >  . /etc/community.cfg
> >  . /etc/firmware_release
> >  
> > +board_name=$(uci -q get board.model.name)
> > +
> >  HOSTNAME=$(uci -q get 'system. at system[0].hostname')
> >  
> >  human_bytes() {
> > @@ -17,6 +19,51 @@ human_bytes() {
> >  		echo $(((GB+512)/1024)) TB
> >  	done
> >  }
> > +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
> > +		linkstate="Multi-Link"
> > +	elif echo "$clientports" | grep -q "${1}" ; then
> > +		linkstate="CLIENT"
> > +	elif echo "$batmanports" | grep -q "${1}" ; then
> > +		linkstate="BATMAN"
> > +	elif echo "$wanports" | grep -q "${1}" ; then
> > +		linkstate="WAN"
> > +	else
> > +		linkstate="Unknown"
> > +	fi
> > +	printf '%-11s' "$linkstate "
> > +}
> > +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
> > +	printf '%-5s%s' "${link} " "- "
> > +	format_state "${port}"
> > +	printf '%-26s' "@ $speed $duplex "
> > +	
> > +	swconfig dev switch0 show | grep "VLAN\s" | 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
> > +			printf '%-2s ' "t"
> > +		elif echo "$vports" | grep -q "${port}" ; then
> > +			printf '%-2s ' "u"
> > +		else
> > +			printf '%-2s ' "-"
> > +		fi
> > +	done
> > +	echo ""
> > +}
> >  
> >  if pidof fastd >/dev/null ; then
> >  	vpn_active="aktiv"
> > @@ -101,23 +148,63 @@ echo "Standortbeschreibung: $(uci -q get 'sys
> > tem. at system[0].position_comment')"
> >  echo "E-Mail Adresse: $(uci -q get 'system. at system[0].contact')"
> >  
> >  echo ""
> > -echo "-> SWITCH"
> > -if swconfig list | grep -q switch0 ; then
> > -	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/')
> > -		link=$(echo "$line" | sed 's/.* link:\([^
> > ]*\).*/\1/')
> > -		if [ "$link" == "up" ] ; then
> > -			speed=$(echo "$line" | sed 's/.*
> > speed:\([^ ]*\).*/\1/')
> > -			duplex=$(echo "$line" | sed 's/.* \([^ ]*-
> > duplex\).*/\1/')
> > -		else
> > -			speed="no link"
> > -			duplex=""
> > -		fi
> > -		port="Port ${port}"
> > -		echo "${port}: ${link} @ $speed $duplex"
> > -	done
> > +echo "-> BITRATEN-BEGRENZUNG"
> > +if [ "$(uci -q get 'simple-tc.example.enabled')" == "1" ] ; then
> > +	echo "Aktiv: ja"
> > +else
> > +	echo "Aktiv: nein"
> > +fi
> > +echo "Download-Limit: $(uci -q get 'simple-
> > tc.example.limit_ingress') kBit/s"
> > +echo "Upload-Limit: $(uci -q get 'simple-tc.example.limit_egress') 
> > kBit/s"
> > +
> > +if grep -q 'PORTORDER=' /etc/network.$board_name ; then
> > +	portorder=$(awk -F= '/PORTORDER=/ { print $2 }'
> > /etc/network.$board_name | sed "s/\"//g")
> >  fi
> >  
> >  echo ""
> > +if [ -n "$portorder" ] ; then
> > +	echo "-> SWITCH (tatsaechliche Portreihenfolge)"
> > +else
> > +	echo "-> SWITCH (interne logische Portreihenfolge)"
> > +fi
> > +
> > +printf '%-54s' "VLAN-IDs:"
> > +swconfig dev switch0 show | grep "VLAN\s" | while read line ; do
> > +	vid=$(echo "$line" | sed 's/.*VLAN \([^:]*\).*/\1/')
> > +	printf '%-2s ' "$vid"
> > +done
> > +echo ""
> > +echo ""
> > +
> > +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
> > +	printf '%-10s%-5s%-13s%s\n' "WAN-Port: " "${link} " "- WAN
> > " "@ $speed"
> > +fi
> > +
> > +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/')
> > +	printf '%-10s' "Port #${port}: "
> > +	format_port "${line}"
> > +done
> > +echo ""
> > +
> > +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
> > +	printf '%-10s' "Port #${port}: "
> > +	format_port "${line}"
> > +done
> > +
> > +echo ""
> >  echo "END"
> > 
> 
> 
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 488 bytes
Beschreibung: This is a digitally signed message part
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20170820/4c341ce1/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev