source: projects/initscripts/tags/initscripts-8.91.0/sysconfig/network-scripts/ifdown-ipsec @ 2576

Revision 2576, 2.2 KB checked in by daisuke, 13 years ago (diff)

tagging as initscripts-8.91.0

Line 
1#!/bin/bash
2PATH=/sbin:/usr/sbin/:/bin:/usr/bin
3
4cd /etc/sysconfig/network-scripts
5. /etc/sysconfig/network-scripts/network-functions
6
7CONFIG=$1
8[ -f "${CONFIG}" ] || CONFIG=ifcfg-${1}
9source_config
10
11if [ -n "$KEY_AH" -o -n "$KEY_ESP" ]; then
12  KEYING=manual
13fi
14
15
16if [ -n "$IKE_PSK" ]; then
17  KEYING=automatic
18  IKE_METHOD=PSK
19fi
20
21if [ -n "$IKE_CERTFILE" ]; then
22  KEYING=automatic
23  IKE_METHOD=X509
24fi
25
26if [ -n "$IKE_PEER_CERTFILE" ]; then
27  KEYING=automatic
28  IKE_METHOD=X509
29fi
30
31if [ -n "$IKE_DNSSEC" ]; then
32  KEYING=automatic
33  IKE_METHOD=X509
34fi
35if [ -n "$RSA_KEY" ]; then
36  KEYING=automatic
37  IKE_METHOD=RSA
38fi
39
40[ -n "$IKE_METHOD" ] && KEYING=automatic
41[ -z "$KEYING" ] && KEYING=manual
42
43if [ -z "$SRC" ]; then
44    SRC=`ip -o route get to $DST | sed "s|.*src \([^ ]*\).*|\1|"`
45fi
46
47if [ -n "$SRCNET" -o -n "$DSTNET" ]; then
48  MODE=tunnel
49  [ -z "$SRCNET" ] && SRCNET="$SRC/32"
50  [ -z "$DSTNET" ] && DSTNET="$DST/32"
51  SPD_SRC=$SRCNET
52  SPD_DST=$DSTNET
53  # If SRCNET is a subnet of DSTNET, exclude SRCNET<->SRCNET communication
54  if [ "${SRCNET##*/}" -gt "${DSTNET##*/}" ] \
55      && [ "$(ipcalc -n "${SRCNET%%/*}/${DSTNET##*/}")" \
56           = "NETWORK=${DSTNET%%/*}" ]; then
57    EXCLUDE_SRCNET=yes
58  fi
59  [ -z "$SRCGW" ] && SRCGW=`ip -o route get to $SRCNET | sed "s|.*src \([^ ]*\).*|\1|"`
60  ip route del to $DSTNET via $SRCGW src $SRCGW
61else
62  MODE=transport
63  SPD_SRC=$SRC
64  SPD_DST=$DST
65  unset EXCLUDE_SRCNET
66fi
67
68setkey -c << EOF
69${SPI_AH_OUT:+delete $SRC $DST ah $SPI_AH_OUT;}
70${SPI_AH_IN:+delete $DST $SRC ah $SPI_AH_IN;}
71${SPI_ESP_OUT:+delete $SRC $DST esp $SPI_ESP_OUT;}
72${SPI_ESP_IN:+delete $DST $SRC esp $SPI_ESP_IN;}
73spddelete $SPD_SRC $SPD_DST any -P out;
74spddelete $SPD_DST $SPD_SRC any -P in;
75${EXCLUDE_SRCNET:+spddelete $SPD_SRC $SPD_SRC any -P out;}
76${EXCLUDE_SRCNET:+spddelete $SPD_SRC $SPD_SRC any -P in;}
77EOF
78
79if [ "$KEYING" = "automatic" -a -n "$IKE_METHOD" ]; then
80   racoontmp=`mktemp /etc/racoon/racoon.XXXXXX`
81   grep -v "^include \"/etc/racoon/$DST.conf\";" /etc/racoon/racoon.conf >> $racoontmp
82   mv -f $racoontmp /etc/racoon/racoon.conf
83   pidof -x /usr/sbin/racoon > /dev/null 2>&1 && killall -HUP /usr/sbin/racoon
84fi
85
86/etc/sysconfig/network-scripts/ifdown-post $CONFIG
Note: See TracBrowser for help on using the repository browser.