[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