Gatewayselegtion

Alexander Gutzeit alexgutfried at gmail.com
Fr Dez 16 21:06:51 CET 2016


Moin Leute,

wir haben in den Haßbergen gerade bissl was umgebaut für ne GW Selection
mit mehreren Hoods.

wollte jetzt nicht soffort das Wiki abändern ohne das vll 1-2 Leute
diese Änderungen bejaht haben.

Ich schmeiß das jetzt einfach mal hier rein und hoffe auf Rückmeldung.



die einzigen Änderungen sind gleich am Anfang die Variablen und dann der
letzte Abschnitt

"

#!/bin/bash
gwsel_lockfile="/tmp/gwsel_lockfile"  # lockfile to allow for low
bandwidth settings
ipr0="10.50.58" #iprange der Hood des bat0
ipr3="10.50.62" #iprange der Hood des bat3
maxl0="250"     #max Clients der Hood des bat0
maxl3="120"     #max Clients der Hood des bat3

if [ -z "$1" ]; then
        echo
        echo "usage: $0 <network-interface> <update_interval [sec]>
<total BW up [Mbit/sec]> <total BW down [Mbit/sec]>"
        echo
        echo "e.g. $0 eth0 60 10 10"
        echo
        exit
fi

while true
do
    if [ ! -e ${gwsel_lockfile} ]; then    # lockfile not present
        # Bandwidth currently used (time averaged)
        R1=$(cat "/sys/class/net/$1/statistics/rx_bytes")
        T1=$(cat "/sys/class/net/$1/statistics/tx_bytes")
        sleep "$2"
        R2=$(cat "/sys/class/net/$1/statistics/rx_bytes")
        T2=$(cat "/sys/class/net/$1/statistics/tx_bytes")
        TkbitPS=$(echo "scale=0; ($T2 - $T1) / 1024 * 8 / $2" | bc -l)
        RkbitPS=$(echo "scale=0; ($R2 - $R1) / 1024 * 8 / $2" | bc -l)
#        echo "BW used      -- up $1: $TkbitPS kBit/s; down $1: $RkbitPS
kBit/s"

        # Remaining bandwidth available; cut-off negative values
        Tavail_kbitPS=$(echo "scale=0; if (($3 * 1024 - $TkbitPS) >0)
($3 * 1024 - $TkbitPS) else 0" | bc -l)
        Ravail_kbitPS=$(echo "scale=0; if (($4 * 1024 - $RkbitPS) >0)
($4 * 1024 - $RkbitPS) else 0" | bc -l)
#        echo "BW available -- up $1: $Tavail_kbitPS kBit/s; down $1:
$Ravail_kbitPS kBit/s"
    else                                     # lockfile present
        Tavail_kbitPS=0
        Ravail_kbitPS=0
        sleep "$2"
    fi

    for bat in /sys/class/net/bat*; do
              iface=${bat##*/}

                        [ ${iface#bat} = 0 ] && ip=ipr0 && maxl=$maxl0
                        [ ${iface#bat} = 3 ] && ip=ipr3 && maxl=$maxl3
                        leasecount=$(/usr/sbin/dhcp-lease-list
--parsable --lease /var/lib/dhcp/dhcpd.leases 2>&1 | grep "$ip" | wc -l)

                        if [ $leasecount -gt $maxl ]
                                   then
                                        batctl -m $iface gw_mode off
                                else

                                        batctl -m $iface gw_mode server
"${Ravail_kbitPS}kbit/${Tavail_kbitPS}kbit"
                        fi
        done
done


"


LG Alex




Mehr Informationen über die Mailingliste franken-dev