97399e9bb1
On initial boot when networking is brought up by cloud-init this is the timeout that dhclient adheres to. Centos configures "timeout 300" (for an EC2 bug) in their cloud image, which results in a 5 minutes delay to boot in cases where no dhcp available (e.g. IPv6 SLAAC). To reduce this boot delay and to provide consistency with places where we have set other dhcp timeouts set this to DIB_DHCP_TIMEOUT. Change-Id: I119a002070501c3dfe7c6730b07ee25f422b85b0 Related-Bug: #1758324
47 lines
2.2 KiB
Bash
Executable file
47 lines
2.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
|
|
set -x
|
|
fi
|
|
set -eu
|
|
set -o pipefail
|
|
|
|
SCRIPTDIR=$(dirname $0)
|
|
|
|
# this script is not needed on Gentoo.
|
|
if [ "$DISTRO_NAME" != "gentoo" ]; then
|
|
install -D -g root -o root -m 0755 ${SCRIPTDIR}/dhcp-all-interfaces.sh /usr/local/sbin/dhcp-all-interfaces.sh
|
|
sed -i "s/DIB_DHCP_TIMEOUT/${DIB_DHCP_TIMEOUT:-30}/" /usr/local/sbin/dhcp-all-interfaces.sh
|
|
fi
|
|
|
|
if [ -f /etc/dhcp/dhclient.conf ] ; then
|
|
# Set the dhclient timeout configurations to match DIB_DHCP_TIMEOUT,
|
|
if grep -o "^timeout " /etc/dhcp/dhclient.conf ; then
|
|
sed -i -e "s/^timeout .*/# \"timeout\" Value set by dhcp-all-interfaces\ntimeout ${DIB_DHCP_TIMEOUT:-30}/" /etc/dhcp/dhclient.conf
|
|
else
|
|
echo -e "# \"timeout\" Value set by dhcp-all-interfaces\ntimeout ${DIB_DHCP_TIMEOUT:-30}" >> /etc/dhcp/dhclient.conf
|
|
fi
|
|
fi
|
|
|
|
if [ "$DIB_INIT_SYSTEM" == "upstart" ]; then
|
|
if [ -e "/etc/redhat-release" ] ; then
|
|
# the init system is upstart but networking is using sysv compatibility (i.e. Centos/RHEL 6)
|
|
install -D -g root -o root -m 0755 ${SCRIPTDIR}/dhcp-all-interfaces.init /etc/init.d/dhcp-all-interfaces
|
|
chkconfig dhcp-all-interfaces on
|
|
else
|
|
install -D -g root -o root -m 0755 ${SCRIPTDIR}/dhcp-all-interfaces.conf /etc/init/dhcp-all-interfaces.conf
|
|
fi
|
|
elif [ "$DIB_INIT_SYSTEM" == "systemd" ]; then
|
|
install -D -g root -o root -m 0644 ${SCRIPTDIR}/dhcp-interface@.service /usr/lib/systemd/system/dhcp-interface@.service
|
|
install -D -g root -o root -m 0644 ${SCRIPTDIR}/dhcp-all-interfaces-udev.rules /etc/udev/rules.d/99-dhcp-all-interfaces.rules
|
|
sed -i "s/TimeoutStartSec=DIB_DHCP_TIMEOUT/TimeoutStartSec=${DIB_DHCP_TIMEOUT:-30}s/" /usr/lib/systemd/system/dhcp-interface@.service
|
|
elif [ "$DIB_INIT_SYSTEM" == "sysv" ]; then
|
|
install -D -g root -o root -m 0755 ${SCRIPTDIR}/dhcp-all-interfaces.init /etc/init.d/dhcp-all-interfaces
|
|
update-rc.d dhcp-all-interfaces defaults
|
|
elif [ "$DISTRO_NAME" == "gentoo" ]; then
|
|
# let ipv6 use normal slaac
|
|
sed -i 's/slaac/#slaac/g' /etc/dhcpcd.conf
|
|
# don't let dhcpcd set domain name or hostname
|
|
sed -i 's/domain_name\,\ domain_search\,\ host_name/domain_search/g' /etc/dhcpcd.conf
|
|
rc-update add dhcpcd default
|
|
fi
|