From 8581bd76c484de618cc5a50dcaabfd6b76440396 Mon Sep 17 00:00:00 2001 From: Christian Dresel Date: Thu, 31 Dec 2020 08:45:12 +0100 Subject: [PATCH] fff-autoconfig: Add IPv6 support With this script, IPv6 can configurate automaticaly Signed-off-by: Christian Dresel --- .../files/usr/lib/autol3.d/10-ipv6.sh | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100755 src/packages/fff/fff-autoconfig/files/usr/lib/autol3.d/10-ipv6.sh diff --git a/src/packages/fff/fff-autoconfig/files/usr/lib/autol3.d/10-ipv6.sh b/src/packages/fff/fff-autoconfig/files/usr/lib/autol3.d/10-ipv6.sh new file mode 100755 index 00000000..7b48cbd0 --- /dev/null +++ b/src/packages/fff/fff-autoconfig/files/usr/lib/autol3.d/10-ipv6.sh @@ -0,0 +1,64 @@ +#!/bin/sh + +# first check is fff.autol3.ipv6 enabled +if [ -z $(uci -q get fff.autol3.ipv6) ] ; then + exit; +fi + +. /usr/share/libubox/jshn.sh + +MACADDR=$(cat /sys/class/net/br-client/address | /bin/sed 's/://g') +MQTTSERVER=$(uci -q get fff.mqtt.server) +ASSIGNEROWN=$(uci -q get fff.autol3.ipv6assigner) +IPOWN=$(uci -q get fff.autol3.ipv6address) + +asknew() { + # Load Blocklist + ipv6assignerblock=$(uci get fff.autol3.ipv6assignerblock) + for ipv6assignerblock in $ipv6assignerblock; do + block="$block -T /ipv6/usethis/+/$ipv6assignerblock" + done + echo $block + mosquitto_pub -h $MQTTSERVER -p 1883 -t '/ipv6/asknew' -m "$MACADDR" + # use the first income message + # cancel after 5 second, after this time we don't get any IP address + autol3config=$(mosquitto_sub -h $MQTTSERVER -p 1883 -t '/ipv6/usethis/#' -C 1 $block) + if [ -z "$autol3config" ] ; then + echo "No IP get" + exit 1; + fi + json_load "$autol3config" + json_get_var assigner assigner + json_get_var ip ip + uci set fff.autol3.ipv6address=$ip + uci set fff.autol3.ipv6assigner=$assigner + uci commit fff + uci del gateway.@client[0].ip6addr + uci add_list gateway.@client[0].ip6addr=$ip + uci commit gateway + yes | configure-layer3 -c + configure-layer3 -a + exit; +} + +canusethis() { + mosquitto_pub -h $MQTTSERVER -p 1883 -t /ipv6/canusethis/$ASSIGNEROWN -m "{ \"mac\":\"$MACADDR\", \"ip\":\"$IPOWN\" }" + canusethisanswer=$(mosquitto_sub -h $MQTTSERVER -p 1883 -t /ipv6/canusethisanswer/$MACADDR -C 1 -W 5) + # check if we get answer, if no load asknew again and get new ip address + if [ -z $canusethisanswer ] ; then + uci del fff.autol3.ipv6address + uci del fff.autol3.ipv6assigner + uci commit fff + uci del gateway.@client[0].ip6addr + uci commit gateway + asknew + fi +} + +if [ -n $(uci -q get fff.autol3) ] && [ -z $(uci -q get fff.autol3.ipv6address) ] ; then + asknew +fi + +if [ -n $(uci -q get fff.autol3.ipv6address) ] ; then + canusethis +fi