liyujie
2025-08-28 b3810562527858a3b3d98ffa6e9c9c5b0f4a9a8e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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);