diff options
Diffstat (limited to 'files/common/etc')
| -rw-r--r-- | files/common/etc/splash.sh | 38 | 
1 files changed, 32 insertions, 6 deletions
diff --git a/files/common/etc/splash.sh b/files/common/etc/splash.sh index b56ddb5..75eb620 100644 --- a/files/common/etc/splash.sh +++ b/files/common/etc/splash.sh @@ -1,12 +1,7 @@  timeout=6000  chain_prefix=splash_db_  chain_id_file=/tmp/splash_chain_id - -chain_id=$(cat $chain_id_file 2>/dev/null || true) -if ! [ "$chain_id" -gt 0 ] &>/dev/null; then -    chain_id=1 -    echo $chain_id > $chain_id_file -fi +tbl=/tmp/p2ptbl/splash  lockSplash () {      exec 666<$chain_id_file @@ -16,3 +11,34 @@ lockSplash () {  unlockSplash () {      exec 666<&-  } + +have_splash_iptable () { +    state=${1:-$(fsm get inetable)} +    [ "$state" == "queen" ] +} + +# $mac +add_splash_iptable () { +    iptables -t nat -I $chain_prefix$chain_id \ +	-m mac --mac-source "$1" -j ACCEPT +} + +# $mac $time +add_splash_p2ptbl () { +    p2ptbl update $tbl "$1" "${2:-$(($(date +%s) + $timeout))}" br-mesh +} + +# determine current splash iptable iteration +chain_id=$(cat $chain_id_file 2>/dev/null || true) +if ! [ "$chain_id" -gt 0 ] &>/dev/null; then +    # first -> create id file +    chain_id=1 +    echo $chain_id > $chain_id_file + +    # create splash p2ptbl and add own MAC addr to it with an at least +    # year 2033 timeout +    p2ptbl init $tbl +    add_splash_p2ptbl \ +	$(ifconfig br-mesh | egrep -o '([0-9A-F]{2}:){5}[0-9A-F]{2}') \ +	2000000000 +fi  | 
