#!/bin/sh
#


hmask=255.255.255.255
nmask0=0.0.0.0
nmask16=255.255.0.0
nmask24=255.255.255.0
nmask25=255.255.255.128
nmask28=255.255.255.240
nmask29=255.255.255.248

sg1=207.236.55.216
sg1a=207.236.55.1
net1=192.168.2.0
bcast1=207.236.55.255
nmask1=$nmask24

sg2=209.157.90.146
sg2a=209.157.90.150
net2=209.157.90.160
bcast2=209.157.90.167
nmask2=$nmask29

sg3=207.236.55.216
sg3a=207.236.55.1
net3=209.157.90.192
bcast3=207.236.55.255
nmask3=$nmask29

sg4=209.157.90.146
sg4a=209.157.90.150
net4=0.0.0.0
bcast4=255.255.255.255
nmask4=$nmask0

ipsecdev=ipsec1

case "$1" in
	setup)
		depmod -a
		modprobe ipsec
		ipsec tncfg --attach --virtual $ipsecdev --physical eth2
		ifconfig $ipsecdev $sg1 broadcast $bcast1 netmask $nmask1
#		ifconfig $ipsecdev $sg1 
		;;
	unload)
		ipsec tncfg --detach --virtual $ipsecdev
		ifconfig $ipsecdev down
#		rmmod ipsec
		;;
	# Transport mode
	tresp3desmd5)
		ipsec spi --edst $sg1 --spi 0x235 --esp 3des-md5-96 \
			--iv 0x1000000000000001 \
			--enckey 0x000100020003000400050006000700080009000a000b000c \
			--authkey 0x000d000e000f00100011001200130014

		route del $sg2
		route add -host $sg2 dev $ipsecdev gw $sg1a

		ipsec eroute --add --src $sg1/$hmask \
			--dst $sg2/$hmask \
			--edst $sg2 --spi 0x225
		ipsec spi --edst $sg2 --spi 0x225 --esp 3des-md5-96 \
			--iv 0x1000000000000001 \
			--enckey 0x00150016001700180019001a001b001c001d001e001f0020 \
			--authkey 0x00210022002300240025002600270028
	;;
	tresp3desmd5del)
		ipsec spi --edst $sg1 --spi 0x235 --del

		ipsec spi --edst $sg2 --spi 0x225 --del

		ipsec eroute --del --src $sg1/$hmask --dst $sg2/$hmask

		route del $sg2
		;;
	trahmd5)
		ipsec spi --edst $sg1 --spi 0x235 --ah md5 \
			--authkey 0x66306630663031326630663066303147

		route del $sg2
		route add -host $sg2 dev $ipsecdev gw $sg1a

		ipsec eroute --add --src $sg1/$hmask \
			--dst $sg2/$hmask \
			--edst $sg2 --spi 0x225
		ipsec spi --edst $sg2 --spi 0x225 --ah md5 \
			--authkey 0x66306630663031326630663066303146
	;;
	trahmd5del)
		ipsec spi --edst $sg1 --spi 0x235 --del

		route del $sg2

		ipsec eroute --del --src $sg1/$hmask \
			--dst $sg2/$hmask
		ipsec spi --edst $sg2 --spi 0x225 --del
	;;
	trespdes)
		ipsec spi --edst $sg1 --spi 0x235 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303145

		route del $sg2
		route add -host $sg2 dev $ipsecdev gw $sg1a

		ipsec eroute --add --src $sg1/$hmask \
			--dst $sg2/$hmask \
			--edst $sg2 --spi 0x225
		ipsec spi --edst $sg2 --spi 0x225 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303144
	;;
	trespdesdel)
		ipsec spi --edst $sg1 --spi 0x235 --del

		route del $sg2

		ipsec eroute --del --src $sg1/$hmask \
			--dst $sg2/$hmask
		ipsec spi --edst $sg2 --spi 0x225 --del
	;;
	trtu)
		route del $sg2
		route add -host $sg2 dev $ipsecdev gw $sg1a

		ipsec eroute --add --src $sg1/$hmask \
			--dst $sg2/$hmask \
			--edst $sg2 --spi 0x225
		ipsec spi --edst $sg2 --spi 0x225 --ip4 \
			--src $sg1 --dst $sg2
	;;
	# Tunnel mode
	tuespdesahmd5)
		# return path
		ipsec spi --edst $sg1 --spi 0x235 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303143
		ipsec spi --edst $sg1 --spi 0x236 --ah md5 \
			--authkey 0x66306630663031326630663066303143

		# forward path
		route del $net2
		route add -net $net2 netmask $nmask2 dev $ipsecdev gw $sg1a

		ipsec eroute --add --src $net1/$nmask1 \
			--dst $net2/$nmask2 \
			--edst $sg2 --spi 0x223
		ipfwadm -F -i accept -S $net1/$nmask1 -D $net2/$nmask2

		ipsec spi --edst $sg2 --spi 0x223 --ip4 \
			--src $sg1 --dst $sg2
		ipsec spi --edst $sg2 --spi 0x225 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303142
		ipsec spi --edst $sg2 --spi 0x226 --ah md5 \
			--authkey 0x66306630663031326630663066303142

		ipsec spigrp $sg2 0x223 \
			$sg2 0x225 \
			$sg2 0x226
	;;
	tuespdesahmd5del)
		# return path
		ipsec spi --edst $sg1 --spi 0x235 --del
#		ipsec spi --edst $sg1 --spi 0x236 --del

		# forward path
		route del $net2

		ipsec eroute --del --src $net1/$nmask1 \
			--dst $net2/$nmask2
		ipfwadm -F -d accept -S $net1/$nmask1 -D $net2/$nmask2

		ipsec spi --edst $sg2 --spi 0x223 --del
#		ipsec spi --edst $sg2 --spi 0x225 --del
#		ipsec spi --edst $sg2 --spi 0x226 --del
	;;
	tuesp3desmd5)
		# return path
		ipsec spi --edst $sg1 --spi 0x235 --esp 3des-md5-96 \
			--iv 0x1000000000000001  \
			--enckey 0x0029002a002b002c002d002e002f00300031003200330034 \
			--authkey 0x00350036003700380039003a003b003c

		route del $net2
		route add -net $net2 dev $ipsecdev gw $sg1a

		# forward path
		ipsec eroute --add --src $net1/$nmask1 \
			--dst $net2/$nmask2 \
			--edst $sg2 --spi 0x223
		ipfwadm -F -i accept -S $net1/$nmask1 -D $net2/$nmask2

		ipsec spi --edst $sg2 --spi 0x223 --ip4 \
			--src $sg1 --dst $sg2
		ipsec spi --edst $sg2 --spi 0x225 --esp 3des-md5-96 \
			--iv 0x1000000000000001  \
			--enckey 0x003d003e003f004000410042004300440045004600470048 \
			--authkey 0x0049004a004b004c004d004e004f0050

		ipsec spigrp $sg2 0x223 \
			$sg2 0x225
	;;
	tuesp3desmd5del)
		# return path
		ipsec spi --edst $sg2 --spi 0x223 --del
#		ipsec spi --edst $sg2 --spi 0x225 --del

		ipsec eroute --del --src $net1/$nmask1 \
			--dst $net2/$nmask2
		ipfwadm -F -d accept -S $net1/$nmask1 -D $net2/$nmask2

		route del $net2

		ipsec spi --edst $sg1 --spi 0x235 --del
	;;
	turoadme)
		# return path
		ipsec spi --edst $sg1 --spi 0x235 --esp 3des-md5-96 \
			--iv 0x1000000000000001 \
			--enckey 0x005100520053005400550056005700580059005a005b005c \
			--authkey 0x005d005e005f00600061006200630064

		# forward path
		route del $net2
		route add -net $net2 netmask $nmask2 dev $ipsecdev gw $sg1a

		ipsec eroute --add --src $sg1/$hmask \
			--dst $net2/$nmask2 \
			--edst $sg2 --spi 0x223

		ipsec spi --edst $sg2 --spi 0x223 --ip4 \
			--src $sg1 --dst $sg2
		ipsec spi --edst $sg2 --spi 0x225 --esp 3des-md5-96 \
			--iv 0x1000000000000001 \
			--enckey 0x00650066006700680069006a006b006c006d006e006f0070 \
			--authkey 0x00710072007300740075007600770078

		ipsec spigrp $sg2 0x223 \
			$sg2 0x225
	;;
	turoadmedel)
		# return path
		ipsec spi --edst $sg1 --spi 0x235 --del

		# forward path
		route del $net2

		ipsec eroute --del --src $sg1/$hmask \
			--dst $net2/$nmask2

		ipsec spi --edst $sg2 --spi 0x223 --del
#		ipsec spi --edst $sg2 --spi 0x225 --del
	;;
	turoadyou)
		# return path
		ipsec spi --edst $sg1 --spi 0x235 --esp 3des-md5-96 \
			--iv 0x1000000000000001 \
			--enckey 0x005100520053005400550056005700580059005a005b005c \
			--authkey 0x005d005e005f00600061006200630064

		# forward path
		route del $sg2
		route add -host $sg2 dev $ipsecdev gw $sg1a

		ipsec eroute --add --src $net1/$nmask1 \
			--dst $sg2/$hmask \
			--edst $sg2 --spi 0x223
		ipfwadm -F -i accept -S $net1/$nmask1 -D $sg2/$hmask

		ipsec spi --edst $sg2 --spi 0x223 --ip4 \
			--src $sg1 --dst $sg2
		ipsec spi --edst $sg2 --spi 0x225 --esp 3des-md5-96 \
			--iv 0x1000000000000001 \
			--enckey 0x00650066006700680069006a006b006c006d006e006f0070 \
			--authkey 0x00710072007300740075007600770078

		ipsec spigrp $sg2 0x223 \
			$sg2 0x225
	;;
	turoadyoudel)
		# return path
		ipsec spi --edst $sg1 --spi 0x235 --del

		# forward path
		route del $sg2

		ipsec eroute --del --src $net1/$nmask1 \
			--dst $sg2/$hmask
		ipfwadm -F -d accept -S $net1/$nmask1 -D $sg2/$hmask

		ipsec spi --edst $sg2 --spi 0x223 --del
#		ipsec spi --edst $sg2 --spi 0x225 --del
	;;
	tusgespdesahmd5)
		# return path
		ipsec spi --edst $sg1 --spi 0x235 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303149
		ipsec spi --edst $sg1 --spi 0x236 --ah md5 \
			--authkey 0x66306630663031326630663066303149

		# forward path
		route del $sg2
		route add -host $sg2 dev $ipsecdev gw $sg1a

		ipsec eroute --add --src $sg1/$hmask \
			--dst $sg2/$hmask \
			--edst $sg2 --spi 0x223

		ipsec spi --edst $sg2 --spi 0x223 --ip4 \
			--src $sg1 --dst $sg2
		ipsec spi --edst $sg2 --spi 0x225 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303148
		ipsec spi --edst $sg2 --spi 0x226 --ah md5 \
			--authkey 0x66306630663031326630663066303148

		ipsec spigrp $sg2 0x223 \
			$sg2 0x225 \
			$sg2 0x226
	;;
	tusgespdesahmd5del)
		# return path
		ipsec spi --edst $sg1 --spi 0x235 --del
#		ipsec spi --edst $sg1 --spi 0x236 --del

		# forward path
		route del $sg2

		ipsec eroute --del --src $sg1/$hmask \
			--dst $sg2/$hmask

		ipsec spi --edst $sg2 --spi 0x223 --del
#		ipsec spi --edst $sg2 --spi 0x225 --del
#		ipsec spi --edst $sg2 --spi 0x226 --del
	;;
	tusgesp3desmd5)
		# return path
		ipsec spi --edst $sg1 --spi 0x235 --esp 3des-md5-96 \
			--iv 0x1000000000000001 \
			--enckey 0x005100520053005400550056005700580059005a005b005c \
			--authkey 0x005d005e005f00600061006200630064

		# forward path
		route del $sg2
		route add -host $sg2 dev $ipsecdev gw $sg1a

		ipsec eroute --add --src $sg1/$hmask \
			--dst $sg2/$hmask \
			--edst $sg2 --spi 0x223

		ipsec spi --edst $sg2 --spi 0x223 --ip4 \
			--src $sg1 --dst $sg2
		ipsec spi --edst $sg2 --spi 0x225 --esp 3des-md5-96 \
			--iv 0x1000000000000001 \
			--enckey 0x00650066006700680069006a006b006c006d006e006f0070 \
			--authkey 0x00710072007300740075007600770078

		ipsec spigrp $sg2 0x223 \
			$sg2 0x225
	;;
	tusgesp3desmd5del)
		# return path
		ipsec spi --edst $sg1 --spi 0x235 --del

		ipsec eroute --del --src $sg1/$hmask \
			--dst $sg2/$hmask

		route del $sg2

		ipsec spi --edst $sg2 --spi 0x223 --del
#		ipsec spi --edst $sg2 --spi 0x225 --del
	;;
	turealips)
		# forward path
		route del $net4
		route add -net $net4 dev $ipsecdev gw $sg3a

		ipsec eroute --add --src $net3/$nmask3 \
			--dst $net4/$nmask4 \
			--edst $sg4 --spi 1502

		ipfwadm -F -i accept -S $net3/$nmask3 -D $net4/$nmask4

		ipsec spi --edst $sg4 --spi 1502 --ip4 \
			--src $sg3 --dst $sg4
		ipsec spi --edst $sg4 --spi 1503 --esp 3des-md5-96 \
			--iv 0xAC38429489A4CAC2  \
			--enckey 0xAC89ACE248107DA856C46EEA820A947313436C80B89043C2 \
			--authkey 0xACF3DDD9A182E95D1384E1391322CAC2

		ipsec spigrp $sg4 1502 \
			$sg4 1503

		# return path
		ipsec spi --edst $sg3 --spi 1501 --esp 3des-md5-96 \
			--iv 0xAC38429489A4CAC2  \
			--enckey 0xAC89ACE248107DA856C46EEA820A947313436C80B89043C2 \
			--authkey 0xACF3DDD9A182E95D1384E1391322CAC2
	;;
	turealipsdel)
		# forward path
		ipsec eroute --del --src $net3/$nmask3 \
			--dst $net4/$nmask4
		ipfwadm -F -d accept -S $net3/$nmask3 -D $net4/$nmask4

		route del $net4

#		ipsec spi --edst $sg4 --spi 1502 --del
		ipsec spi --edst $sg4 --spi 1503 --del

		# return path
#		ipsec spi --edst $sg3 --spi 1500 --del
		ipsec spi --edst $sg3 --spi 1501 --del
	;;
	proc)
		cat /proc/net/ipsec_*
	;;
esac

