summaryrefslogtreecommitdiffstats
path: root/ipsec-tools/src/racoon/contrib/sp.pl
diff options
context:
space:
mode:
Diffstat (limited to 'ipsec-tools/src/racoon/contrib/sp.pl')
-rw-r--r--ipsec-tools/src/racoon/contrib/sp.pl21
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);