diff -urNp openswan-2.6.32-orig/programs/_updown.netkey/_updown.netkey.in openswan-2.6.32-cvs-patched/programs/_updown.netkey/_updown.netkey.in --- openswan-2.6.32-orig/programs/_updown.netkey/_updown.netkey.in 2010-12-20 12:44:19.114080068 -0500 +++ openswan-2.6.32-cvs-patched/programs/_updown.netkey/_updown.netkey.in 2010-12-20 12:57:35.152322209 -0500 @@ -271,8 +271,15 @@ fi addsource() { st=0 # check if given sourceip is local and add as alias if not - if ! ip -o route get ${PLUTO_MY_SOURCEIP%/*} | grep -q ^local; then - it="ip addr add ${PLUTO_MY_SOURCEIP%/*}/32 dev ${PLUTO_INTERFACE%:*}" + saddr=${PLUTO_MY_SOURCEIP%/*}/32 + if test "${PLUTO_PEER_CLIENT##*/}" != 32 + then + saddr=${PLUTO_MY_SOURCEIP%/*}/"${PLUTO_PEER_CLIENT##*/}" + fi + + if ! ip addr show dev ${PLUTO_INTERFACE%:*} | grep -qs "inet ${saddr}" + then + it="ip addr add ${saddr} dev ${PLUTO_INTERFACE%:*}" oops="`eval $it 2>&1`" st=$? if [ " $oops" = " " -a " $st" != " 0" ]; then