#!/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=209.157.90.146
sg1a=209.157.90.150
net1=209.157.90.160
nmask1=$nmask29

sg2=207.236.55.216
sg2a=207.236.55.1
net2=192.168.2.0
nmask2=$nmask24

sg3=209.157.90.146
sg3a=209.157.90.150
net3=0.0.0.0
nmask3=$nmask0

sg4=207.236.55.216
sg4a=207.236.55.1
net4=209.157.90.192
nmask4=$nmask29

ipsecdev=ipsec0

case "$1" in
	setup)
		#depmod -a
		#modprobe ipsec

		#tncfg attach $ipsecdev eth0
		#ifconfig $ipsecdev $sg1 netmask $nmask29 
	;;
	# Transport mode
	tresp3desmd5)
		spi --edst $sg1 --spi 0x225 --esp 3des-md5-96 \
			--iv 0x1000000000000001 \
			--enckey 0x00150016001700180019001a001b001c001d001e001f0020 \
			--authkey 0x00210022002300240025002600270028

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

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

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

		route del $net2

		spi --edst $sg2 --spi 0x235 --del
	;;
	trahmd5)
		spi --edst $sg1 --spi 0x225 --ah md5 \
			--authkey 0x66306630663031326630663066303146

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

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

		route del $sg2

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

		spi --edst $sg2 --spi 0x235 --del
	;;
	trespdes)
		spi --edst $sg1 --spi 0x225 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303144

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

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

		route del $sg2

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

		eroute --add --src $sg1/$hmask \
			--dst $sg2/$hmask \
			--edst $sg2 --spi 0x235
		spi --edst $sg2 --spi 0x235 --ip4 \
			--src $sg1 --dst $sg2
	;;
	# Tunnel mode
	tuespdesahmd5)
		# return path
		spi --edst $sg1 --spi 0x205 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303142
		spi --edst $sg1 --spi 0x206 --ah md5 \
			--authkey 0x66306630663031326630663066303142

		# forward path
		route del $net2
		route add -net $net2 netmask $nmask2 dev $ipsecdev gw $sg1a
		eroute --add --src $net1/$nmask1 \
			--dst $net2/$nmask2 \
			--edst $sg2 --spi 0x213
		spi --edst $sg2 --spi 0x213 --ip4 \
			--src $sg1 --dst $sg2
		spi --edst $sg2 --spi 0x215 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303143
		spi --edst $sg2 --spi 0x216 --ah md5 \
			--authkey 0x66306630663031326630663066303143

		spigrp $sg2 0x213 \
			$sg2 0x215 \
			$sg2 0x216
	;;
	tuespdesahmd5del)
		# return path
		spi --edst $sg1 --spi 0x205 --del

		route del $net2
		eroute --del --src $net1/$nmask1 \
			--dst $net2/$nmask2
		spi --edst $sg2 --spi 0x213 --del
	;;
	tuesp3desmd5)
		# return path
		spi --edst $sg1 --spi 0x205 --esp 3des-md5-96 \
			--iv 0x1000000000000001  \
			--enckey 0x003d003e003f004000410042004300440045004600470048 \
			--authkey 0x0049004a004b004c004d004e004f0050

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

		# forward path
		eroute --add --src $net1/$nmask1 \
			--dst $net2/$nmask2 \
			--edst $sg2 --spi 0x213

		spi --edst $sg2 --spi 0x213 --ip4 \
			--src $sg1 --dst $sg2
		spi --edst $sg2 --spi 0x215 --esp 3des-md5-96 \
			--iv 0x1000000000000001  \
			--enckey 0x0029002a002b002c002d002e002f00300031003200330034 \
			--authkey 0x00350036003700380039003a003b003c

		spigrp $sg2 0x213 \
			$sg2 0x215
	;;
	tuesp3desmd5del)
		# return path
		spi --edst $sg1 --spi 0x205 --del

		route del $net2

		eroute --del --src $net1/$nmask1 \
			--dst $net2/$nmask2

		spi --edst $sg2 --spi 0x213 --del
	;;
	turoadyou)
		# return path
		spi --edst $sg1 --spi 0x205 --esp 3des-md5-96 \
			--iv 0x1000000000000001
			--enckey 0x00650066006700680069006a006b006c006d006e006f0070 \
			--authkey 0x00710072007300740075007600770078

		# forward path
		route del $sg2
		route add -host $sg2 dev $ipsecdev gw $sg1a
		eroute --add --src $net1/$nmask1 \
			--dst $sg2/$hmask \
			--edst $sg2 --spi 0x213
		spi --edst $sg2 --spi 0x213 --ip4 \
			--src $sg1 --dst $sg2
		spi --edst $sg2 --spi 0x215 --esp 3des-md5-96 \
			--iv 0x1000000000000001
			--enckey 0x005100520053005400550056005700580059005a005b005c \
			--authkey 0x005d005e005f00600061006200630064

		spigrp $sg2 0x213 \
			$sg2 0x215
	;;
	turoadyoudel)
		# return path
		spi --edst $sg1 --spi 0x205 --del

		# forward path
		route del $sg2
		eroute --del --src $net1/$nmask1 \
			--dst $sg2/$hmask
		spi --edst $sg2 --spi 0x213 --del
	;;
	turoadme)
		# return path
		spi --edst $sg1 --spi 0x205 --esp 3des-md5-96 \
			--iv 0x1000000000000001 \
			--enckey 0x00650066006700680069006a006b006c006d006e006f0070 \
			--authkey 0x00710072007300740075007600770078

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

		eroute --add --src $sg1/$hmask \
			--dst $net2/$nmask2 \
			--edst $sg2 --spi 0x213
		spi --edst $sg2 --spi 0x213 --ip4 \
			--src $sg1 --dst $sg2
		spi --edst $sg2 --spi 0x215 --esp 3des-md5-96 \
			--iv 0x1000000000000001
			--enckey 0x005100520053005400550056005700580059005a005b005c \
			--authkey 0x005d005e005f00600061006200630064

		spigrp $sg2 0x213 \
			$sg2 0x215
	;;
	turoadmedel)
		# return path
		spi --edst $sg1 --spi 0x205 --del

		route del $net2

		# forward path
		eroute --del --src $sg1/$hmask \
			--dst $net2/$nmask2
		spi --edst $sg2 --spi 0x213 --del
	;;
	tusgespdesahmd5)
		# return path
		spi --edst $sg1 --spi 0x205 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303148
		spi --edst $sg1 --spi 0x206 --ah md5 \
			--authkey 0x66306630663031326630663066303148

		# forward path
		route del $sg2
		route add -host $sg2 dev $ipsecdev gw $sg1a
		eroute --add --src $sg1/$hmask \
			--dst $sg2/$hmask \
			--edst $sg2 --spi 0x213
		spi --edst $sg2 --spi 0x213 --ip4 \
			--src $sg1 --dst $sg2
		spi --edst $sg2 --spi 0x215 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303149
		spi --edst $sg2 --spi 0x216 --ah md5 \
			--authkey 0x66306630663031326630663066303149

		spigrp $sg2 0x213 \
			$sg2 0x215 \
			$sg2 0x216
	;;
	tusgespdesahmd5del)
		# return path
		spi --edst $sg1 --spi 0x205 --del

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

		route del $net2

		spi --edst $sg2 --spi 0x213 --del
	;;
	tusgesp3desmd5)
		# return path
		spi --edst $sg1 --spi 0x205 --esp 3des-md5-96 \
			--iv 0x1000000000000001
			--enckey 0x00650066006700680069006a006b006c006d006e006f0070 \
			--authkey 0x00710072007300740075007600770078

		# forward path
		route del $sg2
		route add -host $sg2 dev $ipsecdev gw $sg1a
		eroute --add --src $sg1/$hmask \
			--dst $sg2/$hmask \
			--edst $sg2 --spi 0x213
		spi --edst $sg2 --spi 0x213 --ip4 \
			--src $sg1 --dst $sg2
		spi --edst $sg2 --spi 0x215 --esp 3des-md5-96 \
			--iv 0x1000000000000001
			--enckey 0x005100520053005400550056005700580059005a005b005c \
			--authkey 0x005d005e005f00600061006200630064

		spigrp $sg2 0x213 \
			$sg2 0x215
	;;
	tusgesp3desmd5del)
		# return path
		spi --edst $sg1 --spi 0x205 --del

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

		route del $net2

		spi --edst $sg2 --spi 0x213 --del
	;;
	turealips)
		# forward path
		# if it needs it to avoid conflict with the next incantation
		route del $net4
		route add -net $net4 netmask $nmask4 dev $ipsecdev gw $sg3a

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

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

		spigrp $sg4 1500 \
			$sg4 1501

		# return path
		spi --edst $sg3 --spi 1503 --esp 3des-md5-96 \
			--iv 0xAC38429489A4CAC2  \
			--enckey 0xAC89ACE248107DA856C46EEA820A947313436C80B89043C2 \
			--authkey 0xACF3DDD9A182E95D1384E1391322CAC2
	;;
	turealipsdel)
		route del $net4
		# Don't forget to replace original deleted route if it existed

		eroute --del --src $net3/$nmask3 \
			--dst $net4/$nmask4
		spi --edst $sg4 --spi 1501 --del

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

