#!/bin/sh

net1=192.168.4.0
net2=192.168.0.0
gw1=192.168.2.110
gw2=192.168.2.105
hmask=255.255.255.255
nmask=255.255.255.0

case "$1" in
	# Setup module and interface
	setup)
		# Load the module
#		depmod -a
#		modprobe ipsec
		# Attach and configure the interface
		ipsec tncfg attach ipsec0 eth0
		ifconfig ipsec0 $gw1 
		;;
	unload)
		ifconfig ipsec0 down
		ifconfig ipsec1 down
#		rmmod ipsec
		;;
	# Transport mode
	tresp3desmd5)
		ipsec spi --edst $gw1 --spi 0x525 --esp 3des-md5-96 \
			--iv 0x1000000000000001  \
			--enckey 0x010203040506070809101112131415161718192021222324 \
			--authkey 0x25262728293031323334353637383940

		route del $gw2
		route add -host $gw2 dev ipsec0

		ipsec eroute --add --src $gw1/$hmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x535
		ipsec spi --edst $gw2 --spi 0x535 --esp 3des-md5-96 \
			--iv 0x1000000000000001  \
			--enckey 0x414243444546474849505152535455565758596061626364 \
			--authkey 0x65666768697071727374757677787980
		;;
	tresp3desmd5del)
		ipsec spi --edst $gw1 --spi 0x525 --del

		ipsec spi --edst $gw2 --spi 0x535 --del


		ipsec eroute --del --src $gw1/$hmask --dst $gw2/$hmask


		route del $gw2
		;;
	tresp3des)
		ipsec spi --edst $gw1 --spi 0x525 --esp 3des \
			--iv 0x1000000000000001  \
			--enckey 0x010203040506070809101112131415161718192021222324

		route del $gw2
		route add -host $gw2 dev ipsec0

		ipsec eroute --add --src $gw1/$hmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x535
		ipsec spi --edst $gw2 --spi 0x535 --esp 3des \
			--iv 0x1000000000000001  \
			--enckey 0x414243444546474849505152535455565758596061626364
		;;
	tresp3desdel)
		ipsec spi --edst $gw1 --spi 0x525 --del

		ipsec spi --edst $gw2 --spi 0x535 --del


		ipsec eroute --del --src $gw1/$hmask --dst $gw2/$hmask


		route del $gw2
		;;
	tresp3dessha1)
		ipsec spi --edst $gw1 --spi 0x525 --esp 3des-sha1-96 \
			--iv 0x1000000000000001  \
			--enckey 0x010203040506070809101112131415161718192021222324 \
			--authkey 0x2526272829303132333435363738394041424344

		route del $gw2
		route add -host $gw2 dev ipsec0

		ipsec eroute --add --src $gw1/$hmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x535
		ipsec spi --edst $gw2 --spi 0x535 --esp 3des-sha1-96 \
			--iv 0x1000000000000001  \
			--enckey 0x414243444546474849505152535455565758596061626364 \
			--authkey 0x6566676869707172737475767778798081828384
		;;
	tresp3dessha1del)
		ipsec spi --edst $gw1 --spi 0x525 --del

		ipsec spi --edst $gw2 --spi 0x535 --del


		ipsec eroute --del --src $gw1/$hmask --dst $gw2/$hmask


		route del $gw2
		;;
	trespdesmd5)
		ipsec spi --edst $gw1 --spi 0x565 --esp des-md5-96 \
			--iv 0x1000000000000001  \
			--enckey 0xb3b4b5b6b7b8b9c0 \
			--authkey 0xc1c2c3c4c5c6c7c8c9d0d1d2d3d4d5d6

		route del $gw2
		route add -host $gw2 dev ipsec0

		ipsec eroute --add --src $gw1/$hmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x575
		ipsec spi --edst $gw2 --spi 0x575 --esp des-md5-96 \
			--iv 0x1000000000000001  \
			--enckey 0xd7d8d9e0e1e2e3e4 \
			--authkey 0xe5e6e7e8e9f0f1f2f3f4f5f6f7f8f900
		;;
	trespdesmd5del)
		ipsec spi --edst $gw1 --spi 0x565 --del

		ipsec spi --edst $gw2 --spi 0x575 --del


		ipsec eroute --del --src $gw1/$hmask --dst $gw2/$hmask


		route del $gw2
		;;
	trespdes)
		ipsec spi --edst $gw1 --spi 0x565 --proto esp --esp des \
			--iv 0x1000000000000001  \
			--enckey 0xb3b4b5b6b7b8b9c0

		ipsec spi --edst $gw2 --spi 0x575 --proto esp --esp des \
			--iv 0x1000000000000001  \
			--enckey 0xd7d8d9e0e1e2e3e4
		ipsec eroute --add --src $gw1/$hmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x575 --proto esp
		route del $gw2
		route add -host $gw2 dev ipsec0
		;;
	trespdesdel)
		ipsec spi --edst $gw1 --spi 0x565 --proto esp --del

		route del $gw2
		ipsec eroute --del --src $gw1/$hmask --dst $gw2/$hmask
		ipsec spi --edst $gw2 --spi 0x575 --proto esp --del
		;;
	trespdessha1)
		ipsec spi --edst $gw1 --spi 0x565 --esp des-sha1-96 \
			--iv 0x1000000000000001  \
			--enckey 0xb3b4b5b6b7b8b9c0 \
			--authkey 0xc1c2c3c4c5c6c7c8c9d0d1d2d3d4d5d6d7d8d9e0

		route del $gw2
		route add -host $gw2 dev ipsec0

		ipsec eroute --add --src $gw1/$hmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x575
		ipsec spi --edst $gw2 --spi 0x575 --esp des-sha1-96 \
			--iv 0x1000000000000001  \
			--enckey 0xd7d8d9e0e1e2e3e4 \
			--authkey 0xe5e6e7e8e9f0f1f2f3f4f5f6f7f8f90001020304
		;;
	trespdessha1del)
		ipsec spi --edst $gw1 --spi 0x565 --del

		ipsec spi --edst $gw2 --spi 0x575 --del


		ipsec eroute --del --src $gw1/$hmask --dst $gw2/$hmask


		route del $gw2
		;;
	trahmd5)
		ipsec spi --edst $gw1 --spi 0x545 --ah hmac-md5 \
			--authkey 0x81828384858687888990919293949596

		route del $gw2
		route add -host $gw2 dev ipsec0

		ipsec eroute --add --src $gw1/$hmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x555
		ipsec spi --edst $gw2 --spi 0x555 --ah hmac-md5 \
			--authkey 0x979899a0a1a2a3a4a5a6a7a8a9b0b1b2
		;;

	trahmd5del)
		ipsec spi --edst $gw1 --spi 0x545 --del

		ipsec spi --edst $gw2 --spi 0x555 --del


		ipsec eroute --del --src $gw1/$hmask --dst $gw2/$hmask


		route del $gw2
		;;
	trahsha1)
		ipsec spi --edst $gw1 --spi 0x585 --proto ah --ah hmac-sha1 \
			--authkey 0x0a0b0c0d0e0f1a1b1c1d1e1f2a2b2c2d2e2f3a3b
		ipsec spi --edst $gw2 --spi 0x595 --proto ah --ah hmac-sha1 \
			--authkey 0x3c3d3e3f4a4b4c4d4e4f5a5b5c5d5e5f6a6b6c6d
		ipsec eroute --add --src $gw1/$hmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x595 --proto ah
		route del $gw2
		route add -host $gw2 dev ipsec0
		;;

	trahsha1del)
		ipsec spi --edst $gw1 --spi 0x585 --proto ah --del

		route del $gw2
		ipsec eroute --del --src $gw1/$hmask --dst $gw2/$hmask
		ipsec spi --edst $gw2 --spi 0x595 --proto ah --del
		;;
	trespdes)
		ipsec spi --edst $gw1 --spi 0x565 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0xb3b4b5b6b7b8b9c0

		route del $gw2
		route add -host $gw2 dev ipsec0

		ipsec eroute --add --src $gw1/$hmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x575
		ipsec spi --edst $gw2 --spi 0x575 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0xd7d8d9e0e1e2e3e4
		;;
	trespdesdel)
		ipsec spi --edst $gw1 --spi 0x565 --del

		ipsec spi --edst $gw2 --spi 0x575 --del


		ipsec eroute --del --src $gw1/$hmask --dst $gw2/$hmask


		route del $gw2
		;;

	trtu)
		route del $gw2
		route add -host $gw2 dev ipsec0

		ipsec eroute --add --src $gw1/$hmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x135
		ipsec spi --edst $gw2 --spi 0x135 ip4 \
			$gw1 $gw2
		;;
	# Tunnel mode
	tuespdesahmd5)
		# return path
		ipsec spi --edst $gw1 --spi 0x105 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303132
		ipsec spi --edst $gw1 --spi 0x106 --ah md5 \
			--authkey 0x66306630663031326630663066303132

		route del $net2
		route add -net $net2 dev ipsec0 gw $gw2

		# forward path
		ipsec eroute --add --src $net1/$nmask \
			--dst $net2/$nmask \
			--edst $gw2 --spi 0x113

		ipsec spi --edst $gw2 --spi 0x113 ip4 \
			$gw1 $gw2
		ipsec spi --edst $gw2 --spi 0x115 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303133
		ipsec spi --edst $gw2 --spi 0x116 --ah md5 \
			--authkey 0x66306630663031326630663066303133

		ipsec spigrp $gw2 0x113 \
			$gw2 0x115 \
			$gw2 0x116
		;;
	turoad)
		# return path
		ipsec spi --edst $gw1 --spi 0x105 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303130
		ipsec spi --edst $gw1 --spi 0x106 --ah md5 \
			--authkey 0x66306630663031326630663066303130

		route del $gw2
		route add -host $gw2 dev ipsec0 gw 192.168.2.103

		# forward path
		ipsec eroute --add --src $net1/$nmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x113

		ipsec spi --edst $gw2 --spi 0x113 ip4 \
			$gw1 $gw2
		ipsec spi --edst $gw2 --spi 0x115 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303131
		ipsec spi --edst $gw2 --spi 0x116 --ah md5 \
			--authkey 0x66306630663031326630663066303131

		ipsec spigrp $gw2 0x113 \
			$gw2 0x115 \
			$gw2 0x116
		;;
	turoad2)
		# return path
		ipsec spi --edst $gw1 --spi 0x105 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303130
		ipsec spi --edst $gw1 --spi 0x106 --ah md5 \
			--authkey 0x66306630663031326630663066303130

		route del $net2
		route add -net $net2 dev ipsec0 gw $gw2

		# forward path
		ipsec ipsec ipsec eroute --add --src $gw1/$hmask \
			--dst $net2/$nmask \
			--edst $gw2 --spi 0x113

		ipsec spi --edst $gw2 --spi 0x113 ip4 \
			$gw1 $gw2
		ipsec spi --edst $gw2 --spi 0x115 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303131
		ipsec spi --edst $gw2 --spi 0x116 --ah md5 \
			--authkey 0x66306630663031326630663066303131

		ipsec spigrp $gw2 0x113 \
			$gw2 0x115 \
			$gw2 0x116
		;;
	tugw)
		# return path
		ipsec spi --edst $gw1 --spi 0x105 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303138
		ipsec spi --edst $gw1 --spi 0x106 --ah md5 \
			--authkey 0x66306630663031326630663066303138

		route del $gw2
		route add -host $gw2 dev ipsec0

		# forward path
		ipsec eroute --add --src $gw1/$hmask \
			--dst $gw2/$hmask \
			--edst $gw2 --spi 0x113

		ipsec spi --edst $gw2 --spi 0x113 ip4 \
			$gw1 $gw2
		ipsec spi --edst $gw2 --spi 0x115 --esp des \
			--iv 0x6630663066306631 \
			--enckey 0x6630663066303139
		ipsec spi --edst $gw2 --spi 0x116 --ah md5 \
			--authkey 0x66306630663031326630663066303139

		ipsec spigrp $gw2 0x113 \
			$gw2 0x115 \
			$gw2 0x116
		;;
	proc)
		cat /proc/net/ipsec_*
		;;
esac