Module Name:    src
Committed By:   christos
Date:           Mon Aug 13 09:16:06 UTC 2018

Modified Files:
        src/etc/rc.d: ipsec

Log Message:
handle v6 addresses


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/etc/rc.d/ipsec

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/etc/rc.d/ipsec
diff -u src/etc/rc.d/ipsec:1.14 src/etc/rc.d/ipsec:1.15
--- src/etc/rc.d/ipsec:1.14	Wed Oct 19 17:27:10 2016
+++ src/etc/rc.d/ipsec	Mon Aug 13 05:16:06 2018
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: ipsec,v 1.14 2016/10/19 21:27:10 christos Exp $
+# $NetBSD: ipsec,v 1.15 2018/08/13 09:16:06 christos Exp $
 #
 
 # PROVIDE: ipsec
@@ -32,7 +32,11 @@ ipsec_prestart()
 ipsec_getip() {
 	ifconfig $1 | while IFS="${IFS}/" read what address rest; do
 		case "$what" in
-		inet)	echo "$address";;
+		inet)	echo "local v4_addr=$address;";;
+		inet6)	case "$address" in
+			fe80:)	;;
+			*)	echo "local v6_addr=$address;";;
+			esac;;
 		esac
 	done
 }
@@ -41,18 +45,20 @@ ipsec_load() {
 	if [ -z "$1" ]; then
 		/sbin/setkey -f /etc/ipsec.conf
 	else
-		sed -e "s/@LOCAL_ADDR@/$1/" < /etc/ipsec.conf | \
+		sed	-e "s/@LOCAL_ADDR@/$1/" \
+			-e "s/@LOCAL_ADDR_V4@/$1/" \
+			-e "s/@LOCAL_ADDR_V6@/$2/" /etc/ipsec.conf | \
 		    /sbin/setkey -f -
 	fi
 }
 
 ipsec_configure() {
 	while true; do
-		local addr="$(ipsec_getip "$ipsec_flags")"
-		case "$addr" in
+		eval $(ipsec_getip "$ipsec_flags")
+		case "$v4_addr" in
 		'')		sleep 1;;
 		"0.0.0.0")	sleep 1;;
-		*)		ipsec_load "$addr"; return;;
+		*)		ipsec_load "$v4_addr" "$v6_addr"; return;;
 		esac
 	done &
 }

Reply via email to