Annotation of embedaddon/ipsec-tools/src/setkey/scriptdump.pl, revision 1.1.1.1

1.1       misho       1: #! @LOCALPREFIX@/bin/perl
                      2: 
                      3: if ($< != 0) {
                      4:        print STDERR "must be root to invoke this\n";
                      5:        exit 1;
                      6: }
                      7: 
                      8: $mode = 'add';
                      9: while ($i = shift @ARGV) {
                     10:        if ($i eq '-d') {
                     11:                $mode = 'delete';
                     12:        } else {
                     13:                print STDERR "usage: scriptdump [-d]\n";
                     14:                exit 1;
                     15:        }
                     16: }
                     17: 
                     18: open(IN, "setkey -D |") || die;
                     19: foreach $_ (<IN>) {
                     20:        if (/^[^\t]/) {
                     21:                ($src, $dst) = split(/\s+/, $_);
                     22:        } elsif (/^\t(esp|ah) mode=(\S+) spi=(\d+).*reqid=(\d+)/) {
                     23:                ($proto, $ipsecmode, $spi, $reqid) = ($1, $2, $3, $4);
                     24:        } elsif (/^\tE: (\S+) (.*)/) {
                     25:                $ealgo = $1;
                     26:                $ekey = $2;
                     27:                $ekey =~ s/\s//g;
                     28:                $ekey =~ s/^/0x/g;
                     29:        } elsif (/^\tA: (\S+) (.*)/) {
                     30:                $aalgo = $1;
                     31:                $akey = $2;
                     32:                $akey =~ s/\s//g;
                     33:                $akey =~ s/^/0x/g;
                     34:        } elsif (/^\tseq=(0x\d+) replay=(\d+) flags=(0x\d+) state=/) {
                     35:                print "$mode $src $dst $proto $spi";
                     36:                $replay = $2;
                     37:                print " -u $reqid" if $reqid;
                     38:                if ($mode eq 'add') {
                     39:                        print " -m $ipsecmode -r $replay" if $replay;
                     40:                        if ($proto eq 'esp') {
                     41:                                print " -E $ealgo $ekey" if $ealgo;
                     42:                                print " -A $aalgo $akey" if $aalgo;
                     43:                        } elsif ($proto eq 'ah') {
                     44:                                print " -A $aalgo $akey" if $aalgo;
                     45:                        }
                     46:                } 
                     47:                print ";\n";
                     48: 
                     49:                $src = $dst = $upper = $proxy = '';
                     50:                $ealgo = $ekey = $aalgo = $akey = '';
                     51:        }
                     52: }
                     53: close(IN);
                     54: 
                     55: exit 0;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>