#! /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);