diff --git a/ffs-set-segment/files/usr/sbin/ffs-set-segment b/ffs-set-segment/files/usr/sbin/ffs-set-segment
index 375890cd525b1b9cf0836258b9e089e90cc79bd3..dc42cf65423cea56164255c2982d1c99d77ce18f 100755
--- a/ffs-set-segment/files/usr/sbin/ffs-set-segment
+++ b/ffs-set-segment/files/usr/sbin/ffs-set-segment
@@ -28,13 +28,24 @@ if [ $PORT -le 10200 ]; then
   exit 1
 fi
 
-SEGNUM=$(printf "%02d" $SEGMENT)
+if [ "$(cat /proc/uptime | cut -d'.' -f1)" -lt 60 ]; then
+  logger -t $ME "waiting for batman"
+  exit 0
+fi
+
+GITSEG=$(printf "%02d" $SEGMENT)
+BATSEG=$(batctl gwl | grep '* ' | cut -d' ' -f2 | cut -d':' -f4)
+if [ -n "$BATSEG" ] && [ "$BATSEG" != "$GITSEG" ]; then
+  logger -t $ME "Avoiding Shortcut"
+  exit 1
+fi
+
 CHANGED=0
 for i in `seq 1 10`;
 do
   GW=$(printf "gw%02d" $i)
   OLDPEER=$(uci get fastd.mesh_vpn_backbone_peer_${GW}.remote)
-  NEWPEER="\"${GW}s${SEGNUM}.gw.freifunk-stuttgart.de\" port $PORT"
+  NEWPEER="\"${GW}s${GITSEG}.gw.freifunk-stuttgart.de\" port $PORT"
 
   if [ "$NEWPEER" != "$OLDPEER" ]; then
     uci set fastd.mesh_vpn_backbone_peer_${GW}.remote="$NEWPEER"
@@ -46,7 +57,7 @@ if [ "$CHANGED" = "1" ]; then
   /sbin/ifdown client
   /etc/init.d/fastd restart
   /sbin/ifup client
-  logger -t $ME "Set Segment: $SEGNUM"
+  logger -t $ME "Set Segment: $GITSEG"
 else
   logger -t $ME "No changes"
 fi