Module Name:    src
Committed By:   christos
Date:           Thu Sep 12 19:52:50 UTC 2013

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

Log Message:
wait until our local address is available before configuring.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 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.12 src/etc/rc.d/ipsec:1.13
--- src/etc/rc.d/ipsec:1.12	Fri Jun 14 12:37:55 2013
+++ src/etc/rc.d/ipsec	Thu Sep 12 15:52:50 2013
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: ipsec,v 1.12 2013/06/14 16:37:55 christos Exp $
+# $NetBSD: ipsec,v 1.13 2013/09/12 19:52:50 christos Exp $
 #
 
 # PROVIDE: ipsec
@@ -37,14 +37,33 @@ ipsec_getip() {
 	done
 }
 
+ipsec_load() {
+	if [ -z "$1" ]; then
+		/sbin/setkey -f /etc/ipsec.conf
+	else
+		sed -e "s/@LOCAL_ADDR@/$1/" < /etc/ipsec.conf | \
+		    /sbin/setkey -f -
+	fi
+}
+
+ipsec_configure() {
+	while true; do
+		local addr="$(ipsec_getip "$ipsec_flags")"
+		case "$addr" in
+		'')		sleep 1;;
+		"0.0.0.0")	sleep 1;;
+		*)		ipsec_load "$addr"; return;;
+		esac
+	done &
+}
+
 ipsec_start()
 {
 	echo "Installing ipsec manual keys/policies."
 	if [ -n "$ipsec_flags" ]; then
-		sed -e "s/@LOCAL_ADDR@/$(ipsec_getip "$ipsec_flags")/" \
-		    < /etc/ipsec.conf | /sbin/setkey -f -
+		ipsec_configure
 	else
-		/sbin/setkey -f /etc/ipsec.conf
+		ipsec_load
 	fi
 }
 

Reply via email to