#!/bin/sh
#
#	$Id: tnlup,v 1.17 2000/03/31 13:10:22 misiek Exp $
#
# Author: Arkadiusz Mikiewicz <misiek@pld.org.pl>
#

DEV=$1

[ -z "$DEV" ] && {
    echo "usage: tnlup <device name>" >&2
    exit 1
}

. /etc/sysconfig/network-scripts/.functions
. /etc/sysconfig/network

TNLCONFIGS="`ls /etc/sysconfig/interfaces/tnlcfg-*|egrep -v '~$'`"
TNLCONFIGS="`egrep -L '^#!' $TNLCONFIGS`"
CONFIG="`egrep -l "^DEVICE=[\"\']*$DEV[\"\']*\$" $TNLCONFIGS`"

if [ -z "$CONFIG" ]; then
    CONFIG="$DEV"
fi

if false; then
[ -f "/etc/sysconfig/interfaces/$CONFIG" ] || CONFIG=tnlcfg-$CONFIG
[ -f "/etc/sysconfig/interfaces/$CONFIG" ] || {
    echo "usage: tnlup <device name>" >&2
    exit 1
}
fi

source_config

if [ "foo$2" = "fooboot" -a "${ONBOOT}" = "no" ]
then
        exit
fi

[ "${IPV6_TUNNELCONFIG}" != "yes" -a "${MODE}" = "sit" ] && exit 0
[ "${IPX}" != "yes" -a "${MODE}" = "ipxip" ] && exit 0
[ "${IPX}" != "yes" -a "${MODE}" = "ipipx" ] && exit 0

if [ "${MODE}" = "gre" -a "`ls -R /lib/modules/\`uname -r\`/ | grep ip_gre.o`" != "" ]; then
	modprobe -s -k ip_gre
elif [ "${MODE}" = "ipip" -a "`ls -R /lib/modules/\`uname -r\`/ | grep ipip.o`" != "" ]; then
	modprobe -s -k ipip
fi

[ -z "${LOCALADDR}" ] && LOCALADDR=any
[ -z "${REMOTEADDR}" ] && REMOTEADDR=any
[ -n "${TTL}" ] && TTL="ttl ${TTL}"
[ -n "${TOS}" ] && TOS="tos ${TOS}"
[ -n "${BIND_DEV}" ] && BIND_DEV="dev ${BIND_DEV}"

if [ "${SEQ}" = "yes" ]; then
	SEQ=seq
else
	[ "${ISEQ}" = "yes" ] && SEQ=iseq
	[ "${OSEQ}" = "yes" ] && SEQ="${SEQ} oseq"
fi

if [ "${CSUM}" = "yes" ]; then
	CSUM=csum
else
        [ "${ICSUM}" = "yes" ] && CSUM=icsum
        [ "${ICSUM}" = "yes" ] && CSUM="${SEQ} ocsum"
fi

[ "${ISEQ}" = "yes" ] && ISEQ=iseq
[ "${ISEQ}" = "yes" ] && ISEQ=iseq
[ "${ISEQ}" = "yes" ] && ISEQ=iseq
[ "${ISEQ}" = "yes" ] && ISEQ=iseq

[ "${TTL}" != "0" -a "${TTL}" != "inherit" ] && PMTUDISC=yes

if [ "${PMTUDISC}" = "yes" ]; then
	PMTUDISC=pmtudisc
elif [ "${PMTUDISC}" = "no" ]; then
	PMTUDISC=nopmtudisc
fi

if [ -n "${KEY}" ]; then
IKEY=""
OKEY=""
fi

if [ "${MODE}" = "ipip" -o "${MODE}" = "sit" ]; then
	
	ip tunnel add ${DEVICE} mode ${MODE} local ${LOCALADDR} remote ${REMOTEADDR} ${TTL} ${TOS} ${PMTUDISC} ${BIND_DEV}

elif [ "${MODE}" = "gre" ]; then

	ip tunnel add ${DEVICE} mode ${MODE} local ${LOCALADDR} remote ${REMOTEADDR} ${TTL} ${TOS} ${PMTUDISC} ${BIND_DEV} ${CSUM} ${ISEQ} ${KEY} ${IKEY} ${OKEY}

elif [ "${MODE}" = "ipxip" -o "${MODE}" = "ipipx" ]; then

echo "obsuga ipxip jeszcze nie zrobiona"

fi
