jpopelka pushed to dhcp (master). "dhclient-script: run also scripts in dhclient-[enter/exit]-hooks.d dir (..more)"
notifications at fedoraproject.org
notifications at fedoraproject.org
Tue May 26 16:07:09 UTC 2015
From 278a2ea40538cc19111e0b2aab73adf334db8d1e Mon Sep 17 00:00:00 2001
From: Jiri Popelka <jpopelka at redhat.com>
Date: Tue, 26 May 2015 18:02:29 +0200
Subject: dhclient-script: run also scripts in dhclient-[enter/exit]-hooks.d
dir
Debian does it similar way.
Not yet documented in dhclient-script man page.
Initial patch by Neal Gompa.
diff --git a/dhclient-script b/dhclient-script
index e7c713c..e2a233c 100644
--- a/dhclient-script
+++ b/dhclient-script
@@ -182,14 +182,44 @@ make_resolv_conf() {
fi
}
-exit_with_hooks() {
- exit_status="${1}"
+# run given script
+run_hook() {
+ local script
+ local exit_status
+ script="${1}"
+
+ if [ -f ${script} ]; then
+ . ${script}
+ fi
- if [ -x ${ETCDIR}/dhclient-exit-hooks ]; then
- . ${ETCDIR}/dhclient-exit-hooks
+ if [ -n "${exit_status}" ] && [ "${exit_status}" -ne 0 ]; then
+ logmessage "${script} returned non-zero exit status ${exit_status}"
fi
- exit "${exit_status}"
+ return ${exit_status}
+}
+
+# run scripts in given directory
+run_hookdir() {
+ local dir
+ dir="${1}"
+
+ if [ -d "${dir}" ]; then
+ for script in $(run-parts --list $dir); do
+ run_hook ${script} || return $?
+ done
+ fi
+
+ return 0
+}
+
+exit_with_hooks() {
+ # Source the documented exit-hook script, if it exists
+ run_hook "${ETCDIR}/dhclient-exit-hooks" || exit $?
+ # Now run scripts in the hooks directory.
+ run_hookdir "${ETCDIR}/dhclient-exit-hooks.d" || exit $?
+
+ exit ${1}
}
quad2num() {
@@ -488,7 +518,7 @@ dhconfig() {
ip -4 addr replace "${alias_ip_address}/${alias_prefix}" broadcast "${alias_broadcast_address}" dev "${interface}" label "${interface}:0"
ip -4 route replace "${alias_ip_address}/32" dev "${interface}"
fi
-
+
# After dhclient brings an interface UP with a new IP address, subnet mask,
# and routes, in the REBOOT/BOUND states -> search for "dhclient-up-hooks".
if [ "${reason}" = "BOUND" ] || [ "${reason}" = "REBOOT" ] ||
@@ -498,7 +528,7 @@ dhconfig() {
[ ! "${old_broadcast_address}" = "${new_broadcast_address}" ] ||
[ ! "${old_routers}" = "${new_routers}" ] ||
[ ! "${old_interface_mtu}" = "${new_interface_mtu}" ]; then
-
+
if [ -x "${ETCDIR}/dhclient-${interface}-up-hooks" ]; then
. "${ETCDIR}/dhclient-${interface}-up-hooks"
elif [ -x ${ETCDIR}/dhclient-up-hooks ]; then
@@ -629,16 +659,9 @@ dh6config() {
# ### MAIN
#
-if [ -x ${ETCDIR}/dhclient-enter-hooks ]; then
- exit_status=0
-
- # dhclient-enter-hooks can abort dhclient-script by setting
- # the exit_status variable to a non-zero value
- . ${ETCDIR}/dhclient-enter-hooks
- if [ ${exit_status} -ne 0 ]; then
- exit ${exit_status}
- fi
-fi
+# Invoke the local dhcp client enter hooks, if they exist.
+run_hook "${ETCDIR}/dhclient-enter-hooks" || exit $?
+run_hookdir "${ETCDIR}/dhclient-enter-hooks.d" || exit $?
if [ ! -r /etc/sysconfig/network-scripts/network-functions ]; then
echo "Missing /etc/sysconfig/network-scripts/network-functions, exiting." >&2
diff --git a/dhcp.spec b/dhcp.spec
index 4982a2a..7f18657 100644
--- a/dhcp.spec
+++ b/dhcp.spec
@@ -18,7 +18,7 @@
Summary: Dynamic host configuration protocol software
Name: dhcp
Version: 4.3.2
-Release: 5%{?dist}
+Release: 6%{?dist}
# NEVER CHANGE THE EPOCH on this package. The previous maintainer (prior to
# dcantrell maintaining the package) made incorrect use of the epoch and
# that's why it is at 12 now. It should have never been used, but it was.
@@ -675,6 +675,9 @@ done
%doc doc/html/
%changelog
+* Tue May 26 2015 Jiri Popelka <jpopelka at redhat.com> - 12:4.3.2-6
+- dhclient-script: run also scripts in dhclient-[enter/exit]-hooks.d dir
+
* Tue Apr 21 2015 Jiri Popelka <jpopelka at redhat.com> - 12:4.3.2-5
- dhclient-script: add a minute to address lifetimes (#1188423)
--
cgit v0.10.2
http://pkgs.fedoraproject.org/cgit/dhcp.git/commit/?h=master&id=278a2ea40538cc19111e0b2aab73adf334db8d1e
More information about the scm-commits
mailing list