diff -Naur freeswan-1.97/utils/_updown freeswan-1.97.jester/utils/_updown
--- freeswan-1.97/utils/_updown	Mon Mar 25 12:04:42 2002
+++ freeswan-1.97.jester/utils/_updown	Mon Apr 15 14:21:37 2002
@@ -59,15 +59,23 @@
 	doroute del
 }
 doroute() {
-	parms="-net $PLUTO_PEER_CLIENT_NET netmask $PLUTO_PEER_CLIENT_MASK"
-	parms2="dev $PLUTO_INTERFACE gw $PLUTO_NEXT_HOP"
+	parms="$PLUTO_PEER_CLIENT"
+	parms2="via $PLUTO_NEXT_HOP dev $PLUTO_INTERFACE"
+	if [ -f /etc/sysconfig/ipsec ]
+	then
+		. /etc/sysconfig/ipsec
+		if [ -n "$DEFAULTSOURCE" ]
+		then
+			params2="$params2 src $DEFAULTSOURCE"
+		fi
+	fi
 	case "$PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK" in
 	"0.0.0.0/0.0.0.0")
 		# horrible kludge for obscure routing bug with opportunistic
-		it="route $1 -net 0.0.0.0 netmask 128.0.0.0 $parms2 &&
-			route $1 -net 128.0.0.0 netmask 128.0.0.0 $parms2"
+		it="ip route $1 0.0.0.0/1 $parms2 &&
+			ip route $1 128.0.0.0/1 $parms2"
 		;;
-	*)	it="route $1 $parms $parms2"
+	*)      it="ip route $1 $parms $parms2"
 		;;
 	esac
 	eval $it
@@ -96,12 +107,13 @@
 	case "$PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK" in
 	"0.0.0.0/0.0.0.0")
 		# horrible kludge for obscure routing bug with opportunistic
-		it="route del -net 0.0.0.0 netmask 128.0.0.0 2>&1 ;
-			route del -net 128.0.0.0 netmask 128.0.0.0 2>&1"
+		parms1="0.0.0.0/1"
+		parms2="128.0.0.0/1"
+		it="ip route del $parms1 dev $PLUTO_INTERFACE 2>&1 ; route del $parms2 dev $PLUTO_INTERFACE 2>&1"
 		;;
 	*)
-		it="route del -net $PLUTO_PEER_CLIENT_NET \
-					netmask $PLUTO_PEER_CLIENT_MASK 2>&1"
+		parms="$PLUTO_PEER_CLIENT"
+		it="ip route del $parms 2>&1"
 		;;
 	esac
 	oops="`eval $it`"
@@ -111,7 +125,7 @@
 		oops="silent error, exit status $status"
 	fi
 	case "$oops" in
-	'SIOCDELRT: No such process'*)
+	'RTNETLINK answers: No such process'*)
 		# This is what route (currently -- not documented!) gives
 		# for "could not find such a route".
 		oops=

