diff options
Diffstat (limited to 'ipsec-tools/src/racoon/contrib/sp.pl')
-rw-r--r-- | ipsec-tools/src/racoon/contrib/sp.pl | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/ipsec-tools/src/racoon/contrib/sp.pl b/ipsec-tools/src/racoon/contrib/sp.pl new file mode 100644 index 00000000..d1f9cafe --- /dev/null +++ b/ipsec-tools/src/racoon/contrib/sp.pl @@ -0,0 +1,21 @@ +#! /usr/pkg/bin/perl + +die "insufficient arguments" if (scalar(@ARGV) < 2); +$src = $ARGV[0]; +$dst = $ARGV[1]; +$mode = 'transport'; +if (scalar(@ARGV) > 2) { + $mode = $ARGV[2]; +} + +open(OUT, "|setkey -c"); +if ($mode eq 'transport') { + print STDERR "install esp transport mode: $src -> $dst\n"; + print OUT "spdadd $src $dst any -P out ipsec esp/transport//require;\n"; + print OUT "spdadd $dst $src any -P in ipsec esp/transport//require;\n"; +} elsif ($mode eq 'delete') { + print STDERR "delete policy: $src -> $dst\n"; + print OUT "spddelete $src $dst any -P out;\n"; + print OUT "spddelete $dst $src any -P in;\n"; +} +close(OUT); |