svn commit: r245525 - head/etc/rc.d

Bjoern A. Zeeb bz at FreeBSD.org
Thu Jan 17 01:27:40 UTC 2013


Author: bz
Date: Thu Jan 17 01:27:39 2013
New Revision: 245525
URL: http://svnweb.freebsd.org/changeset/base/245525

Log:
  Add a conditional sleep 1 in case we add any IPv6 addresses to interfaces.
  Do this per jail started, not per address.  This will allow DAD to complete
  and services to properly start.   Before we have seen problems with services
  trying to start before the IPv6 address was available to use and thus
  erroring and failing to start.
  
  MFC after:	3 days

Modified:
  head/etc/rc.d/jail

Modified: head/etc/rc.d/jail
==============================================================================
--- head/etc/rc.d/jail	Thu Jan 17 01:19:14 2013	(r245524)
+++ head/etc/rc.d/jail	Thu Jan 17 01:27:39 2013	(r245525)
@@ -509,7 +509,7 @@ jail_handle_ips_option()
 		esac
 		case "${_type}" in
 		inet)	;;
-		inet6)	;;
+		inet6)	ipv6_address_count=$((ipv6_address_count + 1)) ;;
 		*)	warn "Could not determine address family.  Not going" \
 			    "to ${_action} address '${_addr}' for ${_jail}."
 			continue
@@ -546,6 +546,7 @@ jail_ips()
 	esac
 
 	# Handle addresses.
+	ipv6_address_count=0
 	jail_handle_ips_option ${_action} "${_ip}"
 	# Handle jail_xxx_ip_multi<N>
 	alias=0
@@ -558,6 +559,12 @@ jail_ips()
 			;;
 		esac
 	done
+	case ${ipv6_address_count} in
+	0)	;;
+	*)	# Sleep 1 second to let DAD complete before starting services.
+		sleep 1
+		;;
+	esac
 }
 
 jail_prestart()


More information about the svn-src-all mailing list