- Mitglied seit
- 2 Mai 2011
- Beiträge
- 116
- Punkte für Reaktionen
- 0
- Punkte
- 0
Bevor ich hier nen ticket eröffne kurze information zu "linux.sh" des Gw6-Clients unter freetz
Änderungen:
Änderungen:
- Der Parameter für entfernen von IFs / Adressen wurde angepasst
- Das Script gibt nun bei startfehlern von "radvd" Konfigurationsparameter aus um eventuell den radvd-Daemon selber zu Konfigurieren)
- Es wird nun überprüft ob die datei "radvd-conf" (von gw6c) existiert, bevor er gestartet wird -> Config-infos werden dann ausgegeben...
- Gestript (Kommentare entfernt) sparte 1 KB! XD
Code:
!/bin/sh
LANGUAGE=C
if [ -z $TSP_VERBOSE ]; then
TSP_VERBOSE=0
fi
KillProcess()
{
if [ ! -z $TSP_VERBOSE ]; then
if [ $TSP_VERBOSE -ge 2 ]; then
echo killing $*
fi
fi
PID=`ps axww | grep $1 | grep -v grep | awk '{ print $1;}'`
echo $PID
if [ ! -z $PID ]; then
kill $PID
fi
}
Display()
{
if [ -z $TSP_VERBOSE ]; then
return;
fi
if [ $TSP_VERBOSE -lt $1 ]; then
return;
fi
shift
echo "$*"
}
Exec()
{
if [ ! -z $TSP_VERBOSE ]; then
if [ $TSP_VERBOSE -ge 2 ]; then
echo $*
fi
fi
$* # Execute command
if [ $? -ne 0 ]; then
echo "Error while executing $1"
echo " Command: $*"
exit 1
fi
}
ExecNoCheck()
{
if [ ! -z $TSP_VERBOSE ]; then
if [ $TSP_VERBOSE -ge 2 ]; then
echo $*
fi
fi
$* # Execute command
}
# Program localization
Display 1 "--- Start of configuration script. ---"
Display 1 "Script: " `basename $0`
ifconfig=/sbin/ifconfig
route=/sbin/route
ipconfig=/sbin/ip
rtadvd=/usr/sbin/radvd
rtadvd_pid=/var/run/radvd/radvd.pid
sysctl=/sbin/sysctl
rtadvdconfigfilename=gw6c-rtadvd.conf
rtadvdconfigfile=[COLOR="red"]/var/tmp/gw6c-rtadvd.conf[/COLOR] #fixed can't create '/usr/share/gw6/gw6c-rtadvd.conf': Read-only file system
if [ -z $TSP_HOME_DIR ]; then
echo "TSP_HOME_DIR variable not specified!;"
exit 1
fi
if [ ! -d $TSP_HOME_DIR ]; then
echo "Error : directory $TSP_HOME_DIR does not exist"
exit 1
fi
#
if [ -z $TSP_HOST_TYPE ]; then
echo Error: TSP_HOST_TYPE not defined.
exit 1
fi
if [ X"${TSP_OPERATION}" = X"TSP_TUNNEL_TEARDOWN" ]; then
Display 1 Tunnel tear down starting...
if [ X"${TSP_HOST_TYPE}" = X"router" ]; then
KillProcess $rtadvdconfigfile
ExecNoCheck $route -A inet6 del $TSP_PREFIX::/$TSP_PREFIXLEN
if [ X"${TSP_PREFIXLEN}" != X"64" ]; then
ExecNoCheck $route -A inet6 del $TSP_PREFIX::/$TSP_PREFIXLEN dev lo
fi
ExecNoCheck [COLOR="red"]$ifconfig $TSP_HOME_INTERFACE del $TSP_PREFIX::1/64[/COLOR]
fi
ExecNoCheck $route -A inet6 del ::/0 2>/dev/null # delete default route
ExecNoCheck $route -A inet6 del 2000::/3 2>/dev/null # delete gw route
if [ -x $ipconfig ]; then
ExecNoCheck $ipconfig tunnel del $TSP_TUNNEL_INTERFACE
else
$ifconfig $TSP_TUNNEL_INTERFACE >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
Delete interface IPv6 configuration.
PREF=`echo $TSP_CLIENT_ADDRESS_IPV6 | sed "s/:0*/:/g" |cut -d : -f1-2`
OLDADDR=`$ifconfig $TSP_TUNNEL_INTERFACE | grep "inet6.* $PREF" | sed -e "s/^.*inet6 addr: //" -e "s/ Scope.*\$//"`
if [ ! -z $OLDADDR ]; then
ExecNoCheck $ifconfig $TSP_TUNNEL_INTERFACE del $OLDADDR
fi
ExecNoCheck $ifconfig $TSP_TUNNEL_INTERFACE down
fi
fi
Display 1 "Tunnel tear down completed."
exit 0
fi
if [ X"${TSP_HOST_TYPE}" = X"host" ] || [ X"${TSP_HOST_TYPE}" = X"router" ]; then
Display 1 "$TSP_TUNNEL_INTERFACE setup"
if [ X"${TSP_TUNNEL_MODE}" = X"v6v4" ]; then
Display 1 "Setting up link to $TSP_SERVER_ADDRESS_IPV4"
if [ -x $ipconfig ]; then
ExecNoCheck $ipconfig tunnel del $TSP_TUNNEL_INTERFACE
ExecNoCheck sleep 1
Exec $ipconfig tunnel add $TSP_TUNNEL_INTERFACE mode sit ttl 64 remote $TSP_SERVER_ADDRESS_IPV4
else
Exec $ifconfig $TSP_TUNNEL_INTERFACE tunnel ::$TSP_SERVER_ADDRESS_IPV4
fi
fi
Exec $ifconfig $TSP_TUNNEL_INTERFACE up
PREF=`echo $TSP_CLIENT_ADDRESS_IPV6 | sed "s/:0*/:/g" |cut -d : -f1-2`
OLDADDR=`$ifconfig $TSP_TUNNEL_INTERFACE | grep "inet6.* $PREF" | sed -e "s/^.*inet6 addr: //" -e "s/ Scope.*\$//"`
if [ ! -z $OLDADDR ]; then
Display 1 "Removing old IPv6 address $OLDADDR"
Exec [COLOR="red"]$ifconfig $TSP_TUNNEL_INTERFACE del $OLDADDR[/COLOR]
fi
Display 1 "This host is: $TSP_CLIENT_ADDRESS_IPV6/$TSP_TUNNEL_PREFIXLEN"
Exec $ifconfig $TSP_TUNNEL_INTERFACE add $TSP_CLIENT_ADDRESS_IPV6/$TSP_TUNNEL_PREFIXLEN
Exec $ifconfig $TSP_TUNNEL_INTERFACE mtu 1280
Display 1 "Adding default route"
ExecNoCheck $route -A inet6 del ::/0 2>/dev/null # delete old default route
ExecNoCheck $route -A inet6 del 2000::/3 2>/dev/null # delete old gw route
Exec $route -A inet6 add ::/0 dev $TSP_TUNNEL_INTERFACE
Exec $route -A inet6 add 2000::/3 dev $TSP_TUNNEL_INTERFACE
fi
if [ X"${TSP_HOST_TYPE}" = X"router" ]; then
Display 1 "Router configuration"
Exec $sysctl -w net.ipv6.conf.all.forwarding=1
if [ X"${TSP_PREFIXLEN}" != X"64" ]; then
ExecNoCheck $route -A inet6 add $TSP_PREFIX::/$TSP_PREFIXLEN dev lo 2>/dev/null
fi
OLDADDR=`$ifconfig $TSP_HOME_INTERFACE | grep "inet6.* $PREF" | sed -e "s/^.*inet6 addr: //" -e "s/ Scope.*\$//"`
if [ ! -z $OLDADDR ]; then
Display 1 "Removing old IPv6 address $OLDADDR"
Exec [COLOR="red"]$ifconfig $TSP_HOME_INTERFACE del $OLDADDR[/COLOR]
fi
Display 1 "Adding prefix to $TSP_HOME_INTERFACE"
Exec [COLOR="red"]$ifconfig $TSP_HOME_INTERFACE add $TSP_PREFIX::1/64[/COLOR]
/etc/init.d/radvd stop
if [ -f $rtadvdconfigfile ]; then
KillProcess $rtadvdconfigfile
fi
cat > $rtadvdconfigfile <<EOF
##### rtadvd.conf made by Gateway6 Client ####
interface $TSP_HOME_INTERFACE
{
[COLOR="red"]AdvSendAdvert on;
AdvManagedFlag on;
AdvOtherConfigFlag on;
AdvReachableTime 0;
AdvRetransTimer 10;
AdvCurHopLimit 64;
AdvDefaultLifetime 1800;
AdvHomeAgentFlag off;
AdvDefaultPreference medium;
AdvSourceLLAddress on;
MaxRtrAdvInterval 600;
MinRtrAdvInterval 198;
MinDelayBetweenRAs 3;[/COLOR]
prefix $TSP_PREFIX::/64
{
[COLOR="red"]AdvValidLifetime 86400;
AdvPreferredLifetime 14400;
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr off;[/COLOR]
};
RDNSS $TSP_CLIENT_ADDRESS_IPV6 #RDNSS (DNS-Server)
{
[COLOR="red"]AdvRDNSSLifetime 1200;[/COLOR]
};
};
EOF
[COLOR="red"] if [ -f $rtadvdconfigfile ]; then
Display 1 "Starting radvd: $rtadvd -u radvd -C /var/tmp/gw6c-rtadvd.conf"
Exec $rtadvd -u radvd -p $rtadvd_pid -C $rtadvdconfigfile
else
Display 1 "radvd(gw6c)-config: $rtadvdconfigfile ist nicht vorhanden! (Client läuft jedoch...)"
Display 1 "radvd-Infos: (Interface: $TSP_HOME_INTERFACE) - (Prefix: $TSP_PREFIX::1/64) - (gw6c-Client-Adresse: $TSP_CLIENT_ADDRESS_IPV6/$TSP_TUNNEL_PREFIXLEN)"
echo "Error : File: $rtadvdconfigfile does not exist!"
echo "radvd-Infos: (Interface: $TSP_HOME_INTERFACE) - (Prefix: $TSP_PREFIX::1/64) - (gw6c-Client-Adresse: $TSP_CLIENT_ADDRESS_IPV6/$TSP_TUNNEL_PREFIXLEN)"
fi[/COLOR]
fi
Display 1 "--- End of configuration script. ---"
exit 0