diff --git a/ffs-set-segment/files/usr/sbin/ffs-set-segment b/ffs-set-segment/files/usr/sbin/ffs-set-segment index 80ed4aba3cb7555d1035a1d2686f104ffeb3af88..baa3b20f468c7a3d3768ed17645a2a2f92f05826 100755 --- a/ffs-set-segment/files/usr/sbin/ffs-set-segment +++ b/ffs-set-segment/files/usr/sbin/ffs-set-segment @@ -1,30 +1,32 @@ #!/bin/sh if [ $(ps | grep -c "{$(basename $0)}") -gt 4 ]; then + echo started twice exit 1 fi if [ $(ps | grep -c "fastd") -lt 2 ]; then + echo fastd not running exit 0 fi if [ "$(uci get fastd.mesh_vpn_backbone.auto_segment)" = "0" ]; then + echo auto_segment disabled exit 0 fi -NODEID=`uci get network.bat0.macaddr` -for i in `seq 1 5`; -do - NODEID=${NODEID/\:/} -done -NODEID=ffs-$NODEID -SEGMENT=`nslookup $NODEID.segassign.freifunk-stuttgart.de [::1]:54 |tail -n1 ` -if [[ -z "${SEGMENT// }" ]]; then +NODEID=`uci get network.bat0.macaddr | sed 's/://g'` +PUBKEY=`/etc/init.d/fastd show_key mesh_vpn | cut -c1-12` +SEGINFO=`nslookup ffs-$NODEID-$PUBKEY.segassign.freifunk-stuttgart.de [::1]:54 | tail -n1` +if [ -z "$SEGINFO" ]; then + echo Node not known exit 1 fi -SEGMENT=${SEGMENT/Address 1: 2001:2:0:711::/} +SEGINFO=${SEGINFO/Address 1: 2001:2:0:711::/} +NEWMTU=$(echo $SEGINFO | cut -d':' -s -f1) +SEGMENT=$(echo $SEGINFO | cut -d':' -f2) + let PORT=SEGMENT+10040 SEGNUM=$(printf "%02d" $SEGMENT) - CHANGED=0 for i in `seq 1 10`; do @@ -38,6 +40,17 @@ do fi done +if [ -n "$NEWMTU" ]; then + OLDMTU=`uci get fastd.mesh_vpn.mtu` + if [ "$NEWMTU" != "$OLDMTU" ]; then + uci set fastd.mesh_vpn.mtu="$NEWMTU" + CHANGED=1 + fi +fi + if [ "$CHANGED" = "1" ]; then /etc/init.d/fastd restart + echo Set Segment: $SEGNUM, MTU: $NEWMTU +else + echo No changes fi