first commit
This commit is contained in:
81
etc_org/dhcp/dhclient-enter-hooks.d/resolvconf
Normal file
81
etc_org/dhcp/dhclient-enter-hooks.d/resolvconf
Normal file
@ -0,0 +1,81 @@
|
||||
#
|
||||
# Script fragment to make dhclient supply nameserver information to resolvconf
|
||||
#
|
||||
|
||||
# Tips:
|
||||
# * Be careful about changing the environment since this is sourced
|
||||
# * This script fragment uses bash features
|
||||
# * As of isc-dhcp-client 4.2 the "reason" (for running the script) can be one of the following.
|
||||
# (Listed on man page:) MEDIUM(0) PREINIT(0) BOUND(M) RENEW(M) REBIND(M) REBOOT(M) EXPIRE(D) FAIL(D) RELEASE(D) STOP(D) NBI(-) TIMEOUT(M)
|
||||
# (Also used in master script:) ARPCHECK(0), ARPSEND(0)
|
||||
# (Also used in master script:) PREINIT6(0) BOUND6(M) RENEW6(M) REBIND6(M) DEPREF6(0) EXPIRE6(D) RELEASE6(D) STOP6(D)
|
||||
# (0) = master script does not run make_resolv_conf
|
||||
# (M) = master script runs make_resolv_conf
|
||||
# (D) = master script downs interface
|
||||
# (-) = master script does nothing with this
|
||||
|
||||
if [ -x /sbin/resolvconf ] ; then
|
||||
# For safety, first undefine the nasty default make_resolv_conf()
|
||||
make_resolv_conf() { : ; }
|
||||
case "$reason" in
|
||||
BOUND|RENEW|REBIND|REBOOT|TIMEOUT)
|
||||
# Define a resolvconf-compatible m_r_c() function
|
||||
# It gets run later (or, in the TIMEOUT case, MAY get run later)
|
||||
make_resolv_conf() {
|
||||
local R
|
||||
local N
|
||||
R=""
|
||||
if [ "$new_domain_name_servers" ] && [ "$new_domain_name" ] ; then
|
||||
R="${R}domain $new_domain_name
|
||||
"
|
||||
fi
|
||||
if [ "$new_domain_name_servers" ] && [ "$new_domain_search" ] ; then
|
||||
R="${R}search $new_domain_search
|
||||
"
|
||||
fi
|
||||
for N in $new_domain_name_servers ; do
|
||||
R="${R}nameserver $N
|
||||
"
|
||||
done
|
||||
[ ! "$interface" ] || echo -n "$R" | /sbin/resolvconf -a "${interface}.dhclient"
|
||||
}
|
||||
;;
|
||||
BOUND6|RENEW6|REBIND6)
|
||||
# Define a resolvconf-compatible m_r_c() function
|
||||
# It gets run later (or, in the TIMEOUT case, MAY get run later)
|
||||
make_resolv_conf() {
|
||||
local R
|
||||
local N
|
||||
local N_LOW
|
||||
local ZONE_ID
|
||||
R=""
|
||||
if [ "$new_dhcp6_name_servers" ] && [ "$new_dhcp6_domain_search" ] ; then
|
||||
R="${R}search $new_dhcp6_domain_search
|
||||
"
|
||||
fi
|
||||
for N in $new_dhcp6_name_servers ; do
|
||||
|
||||
# If the nameserver has a link-local address
|
||||
# then add a zone ID (interface name) to it.
|
||||
N_LOW="$(echo "$N" | tr '[:upper:]' '[:lower:]')"
|
||||
if expr "$N_LOW" : ^fe80:: >/dev/null ; then
|
||||
ZONE_ID="%$interface"
|
||||
else
|
||||
ZONE_ID=""
|
||||
fi
|
||||
R="${R}nameserver $N$ZONE_ID
|
||||
"
|
||||
done
|
||||
[ ! "$interface" ] || echo -n "$R" | /sbin/resolvconf -a "${interface}.ip6.dhclient"
|
||||
}
|
||||
;;
|
||||
EXPIRE|FAIL|RELEASE|STOP)
|
||||
# Delete resolv.conf info
|
||||
[ ! "$interface" ] || /sbin/resolvconf -d "${interface}.dhclient"
|
||||
;;
|
||||
EXPIRE6|RELEASE6|STOP6)
|
||||
# Delete resolv.conf info
|
||||
[ ! "$interface" ] || /sbin/resolvconf -d "${interface}.ip6.dhclient"
|
||||
;;
|
||||
esac
|
||||
fi
|
Reference in New Issue
Block a user