3 # customized updown script
7 # check interface version
8 case "$PLUTO_VERSION" in
9 1.[0]) # Older Pluto?!? Play it safe, script may be using new features.
10 echo "$0: obsolete interface version \`$PLUTO_VERSION'," >&2
11 echo "$0: called by obsolete Pluto?" >&2
15 *) echo "$0: unknown interface version \`$PLUTO_VERSION'" >&2
24 ipfwadm:ipfwadm) # due to (left/right)firewall; for default script only
26 custom:*) # custom parameters (see above CAUTION comment)
28 *) echo "$0: unknown parameters \`$*'" >&2
33 # utility functions for route manipulation
34 # Meddling with this stuff should not be necessary and requires great care.
42 parms="-net $PLUTO_PEER_CLIENT_NET netmask $PLUTO_PEER_CLIENT_MASK"
43 parms2="dev $PLUTO_INTERFACE gw $PLUTO_NEXT_HOP"
44 case "$PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK" in
46 # horrible kludge for obscure routing bug with opportunistic
47 it="route $1 -net 0.0.0.0 netmask 128.0.0.0 $parms2 &&"
48 it="$it route $1 -net 128.0.0.0 netmask 128.0.0.0 $parms2"
49 route $1 -net 0.0.0.0 netmask 128.0.0.0 $parms2 &&
50 route $1 -net 128.0.0.0 netmask 128.0.0.0 $parms2
52 *) it="route $1 $parms $parms2"
53 route $1 $parms $parms2
59 # route has already given its own cryptic message
60 echo "$0: \`$it' failed" >&2
61 if test " $1 $st" = " add 7"
63 # another totally undocumented interface -- 7 and
64 # "SIOCADDRT: Network is unreachable" means that
65 # the gateway isn't reachable.
66 echo "$0: (incorrect or missing nexthop setting??)" >&2
75 case "$PLUTO_VERB:$1" in
76 prepare-host:*|prepare-client:*)
77 # delete possibly-existing route (preliminary to adding a route)
78 case "$PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK" in
80 # horrible kludge for obscure routing bug with opportunistic
81 parms1="-net 0.0.0.0 netmask 128.0.0.0"
82 parms2="-net 128.0.0.0 netmask 128.0.0.0"
83 it="route del $parms1 2>&1 ; route del $parms2 2>&1"
84 oops="`route del $parms1 2>&1 ; route del $parms2 2>&1`"
87 parms="-net $PLUTO_PEER_CLIENT_NET netmask $PLUTO_PEER_CLIENT_MASK"
88 it="route del $parms 2>&1"
89 oops="`route del $parms 2>&1`"
93 if test " $oops" = " " -a " $status" != " 0"
95 oops="silent error, exit status $status"
98 'SIOCDELRT: No such process'*)
99 # This is what route (currently -- not documented!) gives
100 # for "could not find such a route".
105 if test " $oops" != " " -o " $status" != " 0"
107 echo "$0: \`$it' failed ($oops)" >&2
111 route-host:*|route-client:*)
112 # connection to me or my client subnet being routed
115 unroute-host:*|unroute-client:*)
116 # connection to me or my client subnet being unrouted
120 # connection to me coming up
121 # If you are doing a custom version, firewall commands go here.
124 # connection to me going down
125 # If you are doing a custom version, firewall commands go here.
128 # connection to my client subnet coming up
129 # If you are doing a custom version, firewall commands go here.
130 if [ "$PLUTO_MY_PROTOCOL" == "6" ] || [ "$PLUTO_MY_PROTOCOL" == "17" ]
132 iptables -I INPUT 1 -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
133 -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK --sport $PLUTO_PEER_PORT \
134 -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK --dport $PLUTO_MY_PORT -j ACCEPT
135 iptables -I OUTPUT 1 -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
136 -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK --sport $PLUTO_MY_PORT \
137 -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK --dport $PLUTO_PEER_PORT -j ACCEPT
138 iptables -I FORWARD 1 -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
139 -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK --sport $PLUTO_MY_PORT \
140 -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK --dport $PLUTO_PEER_PORT -j ACCEPT
141 iptables -I FORWARD 1 -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
142 -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK --sport $PLUTO_PEER_PORT \
143 -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK --dport $PLUTO_MY_PORT -j ACCEPT
145 iptables -I INPUT 1 -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
146 -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK \
147 -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK -j ACCEPT
148 iptables -I OUTPUT 1 -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
149 -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK \
150 -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK -j ACCEPT
151 iptables -I FORWARD 1 -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
152 -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK \
153 -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK -j ACCEPT
154 iptables -I FORWARD 1 -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
155 -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK \
156 -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK -j ACCEPT
160 # connection to my client subnet going down
161 # If you are doing a custom version, firewall commands go here.
162 if [ "$PLUTO_MY_PROTOCOL" == "6" ] || [ "$PLUTO_MY_PROTOCOL" == "17" ]
164 iptables -D INPUT -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
165 -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK --sport $PLUTO_PEER_PORT \
166 -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK --dport $PLUTO_MY_PORT -j ACCEPT
167 iptables -D OUTPUT -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
168 -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK --sport $PLUTO_MY_PORT \
169 -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK --dport $PLUTO_PEER_PORT -j ACCEPT
170 iptables -D FORWARD -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
171 -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK --sport $PLUTO_MY_PORT \
172 -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK --dport $PLUTO_PEER_PORT -j ACCEPT
173 iptables -D FORWARD -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
174 -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK --sport $PLUTO_PEER_PORT \
175 -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK --dport $PLUTO_MY_PORT -j ACCEPT
177 iptables -D INPUT -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
178 -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK \
179 -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK -j ACCEPT
180 iptables -D OUTPUT -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
181 -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK \
182 -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK -j ACCEPT
183 iptables -D FORWARD -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
184 -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK \
185 -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK -j ACCEPT
186 iptables -D FORWARD -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
187 -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK \
188 -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK -j ACCEPT
192 # connection to client subnet, with (left/right)firewall=yes, coming up
193 # This is used only by the default updown script, not by your custom
194 # ones, so do not mess with it; see CAUTION comment up at top.
195 ipfwadm -F -i accept -b -S $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK \
196 -D $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK
199 # connection to client subnet, with (left/right)firewall=yes, going down
200 # This is used only by the default updown script, not by your custom
201 # ones, so do not mess with it; see CAUTION comment up at top.
202 ipfwadm -F -d accept -b -S $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK \
203 -D $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK
205 *) echo "$0: unknown verb \`$PLUTO_VERB' or parameter \`$1'" >&2