HEX
Server: Apache
System: Linux vmi318001.contaboserver.net 6.8.0-117-generic #117-Ubuntu SMP PREEMPT_DYNAMIC Tue May 5 19:26:24 UTC 2026 x86_64
User: boxelikax (1004)
PHP: 8.2.33
Disabled: NONE
Upload Files
File: /home/boxelikax/public_html/demoltec.com/dhcpcd.zip
PKڍ]4^�4
 
 dhcpcd-run-hooksnuȯ��#!/bin/sh
# dhcpcd client configuration script 

# Handy variables and functions for our hooks to use
ifname="$interface${protocol+.}$protocol"
from=from
signature_base="# Generated by dhcpcd"
signature="$signature_base $from $ifname"
signature_base_end="# End of dhcpcd"
signature_end="$signature_base_end $from $ifname"
state_dir=/run/dhcpcd/hook-state
_detected_init=false

: ${if_up:=false}
: ${if_down:=false}
: ${syslog_debug:=false}

# Ensure that all arguments are unique
uniqify()
{
	result=
	for i do
		case " $result " in
			*" $i "*);;
			*) result="$result${result:+ }$i";;
		esac
	done
	echo "$result"
}

# List interface config files in a directory.
# If dhcpcd is running as a single instance then it will have a list of
# interfaces in the preferred order.
# Otherwise we just use what we have.
list_interfaces()
{
	ifaces=
	for i in $interface_order; do
		for x in "$1"/$i.*; do
			[ -f "$x" ] && ifaces="$ifaces${ifaces:+ }${x##*/}"
		done
	done
	for x in "$1"/*; do
		[ -f "$x" ] && ifaces="$ifaces${ifaces:+ }${x##*/}"
	done
	uniqify $ifaces
}

# Trim function
trim()
{
	var="$*"
	var=${var#"${var%%[![:space:]]*}"}
	var=${var%"${var##*[![:space:]]}"}
	if [ -z "$var" ]; then
		# So it seems our shell doesn't support wctype(3) patterns
		# Fall back to sed
		var=$(echo "$*" | sed -e 's/^[[:space:]]*//;s/[[:space:]]*$//')
	fi
	printf %s "$var"
}

# We normally use sed to extract values using a key from a list of files
# but sed may not always be available at the time.
key_get_value()
{
	key="$1"
	shift

	if command -v sed >/dev/null 2>&1; then
		sed -n "s/^$key//p" $@
	else
		for x do
			while read line; do
				case "$line" in
				"$key"*) echo "${line##$key}";;
				esac
			done < "$x"
		done
	fi
}

# We normally use sed to remove markers from a configuration file
# but sed may not always be available at the time.
remove_markers()
{
	m1="$1"
	m2="$2"
	in_marker=0

	shift; shift
	if command -v sed >/dev/null 2>&1; then
		sed "/^$m1/,/^$m2/d" $@
	else
		for x do
			while read line; do
				case "$line" in
				"$m1"*) in_marker=1;;
				"$m2"*) in_marker=0;;
				*) [ $in_marker = 0 ] && echo "$line";;
				esac
			done < "$x"
		done
	fi
}

# Compare two files.
comp_file()
{
	[ -e "$1" ] && [ -e "$2" ] || return 1

	if command -v cmp >/dev/null 2>&1; then
		cmp -s "$1" "$2"
	elif command -v diff >/dev/null 2>&1; then
		diff -q "$1" "$2" >/dev/null
	else
		# Hopefully we're only working on small text files ...
		[ "$(cat "$1")" = "$(cat "$2")" ]
	fi
}

# Compare two files.
# If different, replace first with second otherwise remove second.
change_file()
{
	if [ -e "$1" ]; then
		if comp_file "$1" "$2"; then
			rm -f "$2"
			return 1
		fi
	fi
	cat "$2" > "$1"
	rm -f "$2"
	return 0
}

# Compare two files.
# If different, copy or link depending on target type
copy_file()
{
	if [ -h "$2" ]; then
		[ "$(readlink "$2")" = "$1" ] && return 1
		ln -sf "$1" "$2"
	else
		comp_file "$1" "$2" && return 1
		cat "$1" >"$2"
	fi
}

# Save a config file
save_conf()
{
	if [ -f "$1" ]; then
		rm -f "$1-pre.$interface"
		cat "$1" > "$1-pre.$interface"
	fi
}

# Restore a config file
restore_conf()
{
	[ -f "$1-pre.$interface" ] || return 1
	cat "$1-pre.$interface" > "$1"
	rm -f "$1-pre.$interface"
}

# Write a syslog entry
syslog()
{
	lvl="$1"

	if [ "$lvl" = debug ]; then
		${syslog_debug} || return 0
	fi
	[ -n "$lvl" ] && shift
	[ -n "$*" ] || return 0
	case "$lvl" in
	err|error)	echo "$interface: $*" >&2;;
	*)		echo "$interface: $*";;
	esac
	if command -v logger >/dev/null 2>&1; then
		logger -i -p daemon."$lvl" -t dhcpcd-run-hooks "$interface: $*"
	fi
}

# Check for a valid name as per RFC952 and RFC1123 section 2.1
valid_domainname()
{
	name="$1"
	[ -z "$name" ] || [ ${#name} -gt 255 ] && return 1
	
	while [ -n "$name" ]; do
		label="${name%%.*}"
		[ -z "$label" ] || [ ${#label} -gt 63 ] && return 1
		case "$label" in
		-*|_*|*-|*_)		return 1;;
		*[![:alnum:]_-]*)	return 1;;
		"$name")		return 0;;
		esac
		name="${name#*.}"
	done
	return 0
}

valid_domainname_list()
{
	for name do
		valid_domainname "$name" || return $?
	done
	return 0
}

# With the advent of alternative init systems, it's possible to have
# more than one installed. So we need to try to guess what one we're
# using unless overridden by configure.
detect_init()
{
	_service_exists=""
	_service_cmd=""
	_service_status=""

	[ -n "$_service_cmd" ] && return 0

	if $_detected_init; then
		[ -n "$_service_cmd" ]
		return $?
	fi

	# Detect the running init system.
	# As systemd and OpenRC can be installed on top of legacy init
	# systems we try to detect them first.
	status=""
	: ${status:=status}
	if [ -x /bin/systemctl ] && [ -S /run/systemd/private ]; then
		_service_exists="/bin/systemctl --quiet is-enabled \$1.service"
		_service_status="/bin/systemctl --quiet is-active \$1.service"
		_service_cmd="/bin/systemctl \$2 --no-block \$1.service"
	elif [ -x /usr/bin/systemctl ] && [ -S /run/systemd/private ]; then
		_service_exists="/usr/bin/systemctl --quiet is-enabled \$1.service"
		_service_status="/usr/bin/systemctl --quiet is-active \$1.service"
		_service_cmd="/usr/bin/systemctl \$2 --no-block \$1.service"
	elif [ -x /sbin/rc-service ] &&
	     { [ -s /libexec/rc/init.d/softlevel ] ||
	     [ -s /run/openrc/softlevel ]; }
	then
		_service_exists="/sbin/rc-service -e \$1"
		_service_cmd="/sbin/rc-service \$1 -- -D \$2"
	elif [ -x /usr/sbin/invoke-rc.d ]; then
		_service_exists="/usr/sbin/invoke-rc.d --query --quiet \$1 start >/dev/null 2>&1 || [ \$? = 104 ]"
		_service_cmd="/usr/sbin/invoke-rc.d \$1 \$2"
	elif [ -x /sbin/service ]; then
		_service_exists="/sbin/service \$1 >/dev/null 2>&1"
		_service_cmd="/sbin/service \$1 \$2"
	elif [ -x /usr/sbin/service ]; then
		_service_exists="/usr/sbin/service \$1 $status >/dev/null 2>&1"
		_service_cmd="/usr/sbin/service \$1 \$2"
	elif [ -x /bin/sv ]; then
		_service_exists="/bin/sv status \$1 >/dev/null 2>&1"
		_service_cmd="/bin/sv \$2 \$1"
	elif [ -x /usr/bin/sv ]; then
		_service_exists="/usr/bin/sv status \$1 >/dev/null 2>&1"
		_service_cmd="/usr/bin/sv \$2 \$1"
	elif [ -e /etc/slackware-version ] && [ -d /etc/rc.d ]; then
		_service_exists="[ -x /etc/rc.d/rc.\$1 ]"
		_service_cmd="/etc/rc.d/rc.\$1 \$2"
		_service_status="/etc/rc.d/rc.\$1 status >/dev/null 2>&1"
	else
		for x in /etc/init.d/rc.d /etc/rc.d /etc/init.d; do
			if [ -d $x ]; then
				_service_exists="[ -x $x/\$1 ]"
				_service_cmd="$x/\$1 \$2"
				_service_status="$x/\$1 $status >/dev/null 2>&1"
				break
			fi
		done
		if [ -e /etc/arch-release ]; then
			_service_status="[ -e /var/run/daemons/\$1 ]"
		elif [ "$x" = "/etc/rc.d" ] && [ -e /etc/rc.d/rc.subr ]; then
			_service_status="$x/\$1 check >/dev/null 2>&1"
		fi
	fi

	_detected_init=true
	if [ -z "$_service_cmd" ]; then
		syslog err "could not detect a useable init system"
		return 1
	fi
	return 0
}

# Check a system service exists 
service_exists()
{
	if [ -z "$_service_exists" ]; then
		detect_init || return 1
	fi
	eval $_service_exists
}

# Send a command to a system service
service_cmd()
{
	if [ -z "$_service_cmd" ]; then
		detect_init || return 1
	fi
	eval $_service_cmd
}

# Send a command to a system service if it is running
service_status()
{
	if [ -z "$_service_cmd" ]; then
		detect_init || return 1
	fi
	if [ -n "$_service_status" ]; then
		eval $_service_status
	else
		service_command $1 status >/dev/null 2>&1
	fi
}

# Handy macros for our hooks
service_command()
{
	service_exists $1 && service_cmd $1 $2
}
service_condcommand()
{
	service_exists $1 && service_status $1 && service_cmd $1 $2
}

# We source each script into this one so that scripts run earlier can
# remove variables from the environment so later scripts don't see them.
# Thus, the user can create their dhcpcd.enter/exit-hook script to configure
# /etc/resolv.conf how they want and stop the system scripts ever updating it.
for hook in \
	/etc/dhcpcd.enter-hook \
	/usr/lib/dhcpcd/dhcpcd-hooks/* \
	/etc/dhcpcd.exit-hook
do
	case "$hook" in
		*/*~)	continue;;
	esac
	for skip in $skip_hooks; do
		case "$hook" in
			*/"$skip")			continue 2;;
			*/[0-9][0-9]"-$skip")		continue 2;;
			*/[0-9][0-9]"-$skip.sh")	continue 2;;
		esac
	done
	if [ -f "$hook" ]; then
		. "$hook"
	fi
done
PKڍ]$��
�
dhcpcd-hooks/50-ntp.confnu�[���# Sample dhcpcd hook script for NTP
# It will configure either one of NTP, OpenNTP or Chrony (in that order)
# and will default to NTP if no default config is found.

# Like our resolv.conf hook script, we store a database of ntp.conf files
# and merge into /etc/ntp.conf

# You can set the env var NTP_CONF to override the derived default on
# systems with >1 NTP client installed.
# Here is an example for OpenNTP
#   dhcpcd -e NTP_CONF=/usr/pkg/etc/ntpd.conf
# or by adding this to /etc/dhcpcd.conf
#   env NTP_CONF=/usr/pkg/etc/ntpd.conf
# or by adding this to /etc/dhcpcd.enter-hook
#   NTP_CONF=/usr/pkg/etc/ntpd.conf
# To use Chrony instead, simply change ntpd.conf to chrony.conf in the
# above examples.

: ${ntp_confs:=ntp.conf ntpd.conf chrony.conf}
: ${ntp_conf_dirs=/etc /usr/pkg/etc /usr/local/etc}
ntp_conf_dir="$state_dir/ntp.conf"

# If NTP_CONF is not set, work out a good default
if [ -z "$NTP_CONF" ]; then
	for d in ${ntp_conf_dirs}; do
		for f in ${ntp_confs}; do
			if [ -e "$d/$f" ]; then
				NTP_CONF="$d/$f"
				break 2
			fi
		done
	done
	[ -e "$NTP_CONF" ] || NTP_CONF=/etc/ntp.conf
fi

# Derive service name from configuration
if [ -z "$ntp_service" ]; then
	case "$NTP_CONF" in
	*chrony.conf)		ntp_service=chronyd;;
	*)			ntp_service=ntpd;;
	esac
fi

# Debian has a separate file for DHCP config to avoid stamping on
# the master.
if [ "$ntp_service" = ntpd ] && command -v invoke-rc.d >/dev/null 2>&1; then
	[ -e /var/lib/ntp ] || mkdir /var/lib/ntp
	: ${ntp_service:=ntp}
	: ${NTP_DHCP_CONF:=/var/lib/ntp/ntp.conf.dhcp}
fi

: ${ntp_restart_cmd:=service_condcommand $ntp_service restart}

ntp_conf=${NTP_CONF}
NL="
"

build_ntp_conf()
{
	cf="$state_dir/ntp.conf.$ifname"

	# Build a list of interfaces
	interfaces=$(list_interfaces "$ntp_conf_dir")

	header=
	servers=
	if [ -n "$interfaces" ]; then
		# Build the header
		for x in ${interfaces}; do
			header="$header${header:+, }$x"
		done

		# Build a server list
		srvs=$(cd "$ntp_conf_dir";
			key_get_value "server " $interfaces)
		if [ -n "$srvs" ]; then
			for x in $(uniqify $srvs); do
				servers="${servers}server $x$NL"
			done
		fi
	fi

	# Merge our config into ntp.conf
	[ -e "$cf" ] && rm -f "$cf"
	[ -d "$ntp_conf_dir" ] || mkdir -p "$ntp_conf_dir"

	if [ -n "$NTP_DHCP_CONF" ]; then
		[ -e "$ntp_conf" ] && cp "$ntp_conf" "$cf"
		ntp_conf="$NTP_DHCP_CONF"
	elif [ -e "$ntp_conf" ]; then
		remove_markers "$signature_base" "$signature_base_end" \
			"$ntp_conf" > "$cf"
	fi

	if [ -n "$servers" ]; then
		echo "$signature_base${header:+ $from }$header" >> "$cf"
		printf %s "$servers" >> "$cf"
		echo "$signature_base_end${header:+ $from }$header" >> "$cf"
	else
		[ -e "$ntp_conf" ] && [ -e "$cf" ] || return
	fi

	# If we changed anything, restart ntpd
	if change_file "$ntp_conf" "$cf"; then
		[ -n "$ntp_restart_cmd" ] && eval $ntp_restart_cmd
	fi
}

add_ntp_conf()
{
	cf="$ntp_conf_dir/$ifname"

	[ -e "$cf" ] && rm "$cf"
	[ -d "$ntp_conf_dir" ] || mkdir -p "$ntp_conf_dir"
	if [ -n "$new_ntp_servers" ]; then
		for x in $(uniqify $new_ntp_servers); do
			echo "server $x" >> "$cf"
		done
	fi
	build_ntp_conf
}

remove_ntp_conf()
{
	if [ -e "$ntp_conf_dir/$ifname" ]; then
		rm "$ntp_conf_dir/$ifname"
	fi
	build_ntp_conf
}

# For ease of use, map DHCP6 names onto our DHCP4 names
case "$reason" in
BOUND6|RENEW6|REBIND6|REBOOT6|INFORM6)
	new_ntp_servers="$new_dhcp6_sntp_servers $new_dhcp6_ntp_server_addr $new_dhcp6_ntp_server_fqdn"
;;
esac

if $if_configured; then
	if $if_up; then
		add_ntp_conf
	elif $if_down; then
		remove_ntp_conf
	fi
fi
PKڍ]�P�|��dhcpcd-hooks/01-testnu�[���# Echo the interface flags, reason and message options

if [ "$reason" = "TEST" ]; then
	# General variables at the top
	set | while read line; do
		case "$line" in
		interface=*|pid=*|reason=*|protocol=*|profile=*|skip_hooks=*)
			echo "$line";;
		esac
	done
	# Interface flags
	set | while read line; do
		case "$line" in
		ifcarrier=*|ifflags=*|ifmetric=*|ifmtu=*|ifwireless=*|ifssid=*)
			echo "$line";;
		esac
	done
	# Old lease
	set | while read line; do
		case "$line" in
		old_*) echo "$line";;
		esac
	done
	# New lease
	set | while read line; do
		case "$line" in
		new_*) echo "$line";;
		esac
	done
	# Router Advertisements
	set | while read line; do
		case "$line" in
		nd[0-9]*_*) echo "$line";;
		esac
	done
	exit 0
fi
PKڍ]J)N��dhcpcd-hooks/50-timesyncd.confnu�[���: ${timesyncd_conf_d:=/run/systemd/timesyncd.conf.d}
timesyncd_conf="${timesyncd_conf_d}/dhcpcd-$ifname.conf"
timesyncd_tmp_d="$state_dir/timesyncd"
timesyncd_tmp="$timesyncd_tmp_d/$ifname"

NL="
"

remove_timesyncd_conf()
{
	if [ -e "$timesyncd_conf" ]; then
		rm "$timesyncd_conf"
		systemctl try-reload-or-restart --no-block systemd-timesyncd
	fi
}

add_timesyncd_conf()
{
	if [ -z "$new_ntp_servers" ]; then
		remove_timesyncd_conf
		return $?
	fi

	mkdir -p "$timesyncd_tmp_d" "$timesyncd_conf_d"

	conf="$signature$NL"
	conf="${conf}[Time]$NL"
	conf="${conf}NTP="
	# Trim spaces
	space=false
	for ntp_server in $(uniqify $new_ntp_servers); do
		if ! $space; then
			space=true
		else
			conf="$conf "
		fi
		conf="$conf$ntp_server"
	done
	conf="$conf$NL"

	printf %s "$conf" > "$timesyncd_tmp"
	if change_file "$timesyncd_conf" "$timesyncd_tmp"; then
		systemctl try-reload-or-restart --no-block systemd-timesyncd
	fi
}

# For ease of use, map DHCP6 names onto our DHCP4 names
case "$reason" in
BOUND6|RENEW6|REBIND6|REBOOT6|INFORM6)
	new_ntp_servers="$new_dhcp6_sntp_servers $new_dhcp6_ntp_server_addr $new_dhcp6_ntp_server_fqdn"
;;
esac

if $if_configured; then
	if $if_up; then
		add_timesyncd_conf
	elif $if_down; then
		remove_timesyncd_conf
	fi
fi
PKڍ]5�����dhcpcd-hooks/30-hostnamenu�[���# Set the hostname from DHCP data if required

# A hostname can either be a short hostname or a FQDN.
# hostname_fqdn=true
# hostname_fqdn=false
# hostname_fqdn=server

# A value of server means just what the server says, don't manipulate it.
# This could lead to an inconsistent hostname on a DHCPv4 and DHCPv6 network
# where the DHCPv4 hostname is short and the DHCPv6 has an FQDN.
# DHCPv6 has no hostname option.
# RFC4702 section 3.1 says FQDN should be prefered over hostname.
#
# As such, the default is hostname_fqdn=true so that a consistent hostname
# is always assigned.
: ${hostname_fqdn:=true}

# If we used to set the hostname, but relinquish control of it, we should
# reset to the default value.
: ${hostname_default=(none)}

# Some systems don't have hostname(1)
_hostname()
{
	if [ -z "${1+x}" ]; then
		if [ -r /proc/sys/kernel/hostname ]; then
			read name </proc/sys/kernel/hostname && echo "$name"
		elif command -v hostname >/dev/null 2>/dev/null; then
			hostname
		elif sysctl kern.hostname >/dev/null 2>&1; then
			sysctl -n kern.hostname
		elif sysctl kernel.hostname >/dev/null 2>&1; then
			sysctl -n kernel.hostname
		else
			return 1
		fi
		return $?
	fi

	if [ -w /proc/sys/kernel/hostname ]; then
		echo "$1" >/proc/sys/kernel/hostname
	elif [ -n "$1" ] && command -v hostname >/dev/null 2>&1; then
		hostname "$1"
	elif sysctl kern.hostname >/dev/null 2>&1; then
		sysctl -w "kern.hostname=$1" >/dev/null
	elif sysctl kernel.hostname >/dev/null 2>&1; then
		sysctl -w "kernel.hostname=$1" >/dev/null
	else
		# May fail to set a blank hostname
		hostname "$1"
	fi
}

is_default_hostname()
{
	case "$1" in
	""|"$hostname_default"|localhost|localhost.localdomain)
		return 0;;
	esac
	return 1
}

need_hostname()
{
	# Always load the hostname variable for future use
	hostname="$(_hostname)"
	is_default_hostname "$hostname" && return 0

	case "$force_hostname" in
	[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|1) return 0;;
	esac

	if [ -n "$old_fqdn" ]; then
		if ${hfqdn} || ! ${hshort}; then
			[ "$hostname" = "$old_fqdn" ]
		else
			[ "$hostname" = "${old_fqdn%%.*}" ]
		fi
	elif [ -n "$old_host_name" ]; then
		if ${hfqdn}; then
			if [ -n "$old_domain_name" ] &&
			   [ "$old_host_name" = "${old_host_name#*.}" ]
			then
				[ "$hostname" = \
				    "$old_host_name.$old_domain_name" ]
			else
				[ "$hostname" = "$old_host_name" ]
			fi
		elif ${hshort}; then
			[ "$hostname" = "${old_host_name%%.*}" ]
		else
			[ "$hostname" = "$old_host_name" ]
		fi
	else
		# No old hostname
		false
	fi
}

try_hostname()
{
	[ "$hostname" = "$1" ] && return 0
	if valid_domainname "$1"; then
		syslog info "Setting hostname: $1"
		_hostname "$1"
	else
		syslog err "Invalid hostname: $1"
	fi
}

set_hostname()
{
	hfqdn=false
	hshort=false
	case "$hostname_fqdn" in
	[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|1)	hfqdn=true;;
	""|[Ss][Ee][Rr][Vv][Ee][Rr])		;;
	*)					hshort=true;;
	esac

	need_hostname || return 0

	if [ -n "$new_fqdn" ]; then
		if ${hfqdn} || ! ${hshort}; then
			try_hostname "$new_fqdn"
		else
			try_hostname "${new_fqdn%%.*}"
		fi
	elif [ -n "$new_host_name" ]; then
		if ${hfqdn}; then
			if [ -n "$new_domain_name" ] &&
			   [ "$new_host_name" = "${new_host_name#*.}" ]
			then
				try_hostname "$new_host_name.$new_domain_name"
			else
				try_hostname "$new_host_name"
			fi
		elif ${hshort}; then
			try_hostname "${new_host_name%%.*}"
		else
			try_hostname "$new_host_name"
		fi
	elif ! is_default_hostname "$hostname"; then
		try_hostname "$hostname_default"
	fi
}

# For ease of use, map DHCP6 names onto our DHCP4 names
case "$reason" in
BOUND6|RENEW6|REBIND6|REBOOT6|INFORM6)
	new_fqdn="$new_dhcp6_fqdn"
	old_fqdn="$old_dhcp6_fqdn"
	;;
esac

if $if_configured && $if_up && [ "$reason" != ROUTERADVERT ]; then
	set_hostname
fi
PKڍ]�}t�dhcpcd-hooks/20-resolv.confnu�[���# Generate /etc/resolv.conf
# Support resolvconf(8) if available
# We can merge other dhcpcd resolv.conf files into one like resolvconf,
# but resolvconf is preferred as other applications like VPN clients
# can readily hook into it.
# Also, resolvconf can configure local nameservers such as bind
# or dnsmasq. This is important as the libc resolver isn't that powerful.

resolv_conf_dir="$state_dir/resolv.conf"
nocarrier_roaming_dir="$state_dir/roaming"
NL="
"
: ${resolvconf:=resolvconf}
if command -v "$resolvconf" >/dev/null 2>&1; then
	have_resolvconf=true
else
	have_resolvconf=false
fi

build_resolv_conf()
{
	cf="$state_dir/resolv.conf.$ifname"

	# Build a list of interfaces
	interfaces=$(list_interfaces "$resolv_conf_dir")

	# Build the resolv.conf
	header=
	if [ -n "$interfaces" ]; then
		# Build the header
		for x in ${interfaces}; do
			header="$header${header:+, }$x"
		done

		# Build the search list
		domain=$(cd "$resolv_conf_dir"; \
			key_get_value "domain " ${interfaces})
		search=$(cd "$resolv_conf_dir"; \
			key_get_value "search " ${interfaces})
		set -- ${domain}
		domain="$1"
		[ -n "$2" ] && search="$search $*"
		[ -n "$search" ] && search="$(uniqify $search)"
		[ "$domain" = "$search" ] && search=
		[ -n "$domain" ] && domain="domain $domain$NL"
		[ -n "$search" ] && search="search $search$NL"

		# Build the nameserver list
		srvs=$(cd "$resolv_conf_dir"; \
			key_get_value "nameserver " ${interfaces})
		for x in $(uniqify $srvs); do
			servers="${servers}nameserver $x$NL"
		done
	fi
	header="$signature_base${header:+ $from }$header"

	# Assemble resolv.conf using our head and tail files
	[ -f "$cf" ] && rm -f "$cf"
	[ -d "$resolv_conf_dir" ] || mkdir -p "$resolv_conf_dir"
	echo "$header" > "$cf"
	if [ -f /etc/resolv.conf.head ]; then
		cat /etc/resolv.conf.head >> "$cf"
	else
		echo "# /etc/resolv.conf.head can replace this line" >> "$cf"
	fi
	printf %s "$domain$search$servers" >> "$cf"
	if [ -f /etc/resolv.conf.tail ]; then
		cat /etc/resolv.conf.tail >> "$cf"
	else
		echo "# /etc/resolv.conf.tail can replace this line" >> "$cf"
	fi
	if change_file /etc/resolv.conf "$cf"; then
		chmod 644 /etc/resolv.conf
	fi
	rm -f "$cf"
}

# Extract any ND DNS options from the RA
# Obey the lifetimes
eval_nd_dns()
{

	eval rdnsstime=\$nd${i}_rdnss${j}_lifetime
	[ -z "$rdnsstime" ] && return 1
	ltime=$(($rdnsstime - $offset))
	if [ "$ltime" -gt 0 ]; then
		eval rdnss=\$nd${i}_rdnss${j}_servers
		[ -n "$rdnss" ] && new_rdnss="$new_rdnss${new_rdnss:+ }$rdnss"
	fi

	eval dnssltime=\$nd${i}_dnssl${j}_lifetime
	[ -z "$dnssltime" ] && return 1
	ltime=$(($dnssltime - $offset))
	if [ "$ltime" -gt 0 ]; then
		eval dnssl=\$nd${i}_dnssl${j}_search
		[ -n "$dnssl" ] && new_dnssl="$new_dnssl${new_dnssl:+ }$dnssl"
	fi

	j=$(($j + 1))
	return 0
}

add_resolv_conf()
{
	conf="$signature$NL"
	warn=true

	# Loop to extract the ND DNS options using our indexed shell values
	i=1
	j=1
	while true; do
		eval acquired=\$nd${i}_acquired
		[ -z "$acquired" ] && break
		eval now=\$nd${i}_now
		[ -z "$now" ] && break
		offset=$(($now - $acquired))
		while true; do
			eval_nd_dns || break
		done
		i=$(($i + 1))
		j=1
	done
	[ -n "$new_rdnss" ] && \
	    new_domain_name_servers="$new_domain_name_servers${new_domain_name_servers:+ }$new_rdnss"
	[ -n "$new_dnssl" ] && \
	    new_domain_search="$new_domain_search${new_domain_search:+ }$new_dnssl"

	# Derive a new domain from our various hostname options
	if [ -z "$new_domain_name" ]; then
		if [ "$new_dhcp6_fqdn" != "${new_dhcp6_fqdn#*.}" ]; then
			new_domain_name="${new_dhcp6_fqdn#*.}"
		elif [ "$new_fqdn" != "${new_fqdn#*.}" ]; then
			new_domain_name="${new_fqdn#*.}"
		elif [ "$new_host_name" != "${new_host_name#*.}" ]; then
			new_domain_name="${new_host_name#*.}"
		fi
	fi

	# If we don't have any configuration, remove it
	if [ -z "$new_domain_name_servers" ] &&
	   [ -z "$new_domain_name" ] &&
	   [ -z "$new_domain_search" ]; then
		remove_resolv_conf
		return $?
	fi

	if [ -n "$new_domain_name" ]; then
		set -- $new_domain_name
		if valid_domainname "$1"; then
			conf="${conf}domain $1$NL"
		else
			syslog err "Invalid domain name: $1"
		fi
		# If there is no search this, make this one
		if [ -z "$new_domain_search" ]; then
			new_domain_search="$new_domain_name"
			[ "$new_domain_name" = "$1" ] && warn=true
		fi
	fi
	if [ -n "$new_domain_search" ]; then
		new_domain_search=$(uniqify $new_domain_search)
		if valid_domainname_list $new_domain_search; then
			conf="${conf}search $new_domain_search$NL"
		elif ! $warn; then
			syslog err "Invalid domain name in list:" \
			    "$new_domain_search"
		fi
	fi
	new_domain_name_servers=$(uniqify $new_domain_name_servers)
	for x in ${new_domain_name_servers}; do
		conf="${conf}nameserver $x$NL"
	done
	if $have_resolvconf; then
		[ -n "$ifmetric" ] && export IF_METRIC="$ifmetric"
		printf %s "$conf" | "$resolvconf" -a "$ifname"
		return $?
	fi

	if [ -e "$resolv_conf_dir/$ifname" ]; then
		rm -f "$resolv_conf_dir/$ifname"
	fi
	[ -d "$resolv_conf_dir" ] || mkdir -p "$resolv_conf_dir"
	printf %s "$conf" > "$resolv_conf_dir/$ifname"
	build_resolv_conf
}

remove_resolv_conf()
{
	if $have_resolvconf; then
		"$resolvconf" -d "$ifname" -f
	else
		if [ -e "$resolv_conf_dir/$ifname" ]; then
			rm -f "$resolv_conf_dir/$ifname"
		fi
		build_resolv_conf
	fi
}

# For ease of use, map DHCP6 names onto our DHCP4 names
case "$reason" in
BOUND6|RENEW6|REBIND6|REBOOT6|INFORM6)
	new_domain_name_servers="$new_dhcp6_name_servers"
	new_domain_search="$new_dhcp6_domain_search"
	;;
esac

if $if_configured; then
	if $have_resolvconf && [ "$reason" = NOCARRIER_ROAMING ]; then
		# avoid calling resolvconf -c on CARRIER unless we roam
		mkdir -p "$nocarrier_roaming_dir"
		echo " " >"$nocarrier_roaming_dir/$interface"
		"$resolvconf" -C "$interface.*"
	elif $have_resolvconf && [ "$reason" = CARRIER ]; then
		# Not all resolvconf implementations support -c
		if [ -e "$nocarrier_roaming_dir/$interface" ]; then
			rm -f "$nocarrier_roaming_dir/$interface"
			"$resolvconf" -c "$interface.*"
		fi
	elif $if_up || [ "$reason" = ROUTERADVERT ]; then
		add_resolv_conf
	elif $if_down; then
		remove_resolv_conf
	fi
fi
PKڍ]4^�4
 
 dhcpcd-run-hooksnuȯ��PKڍ]$��
�
M dhcpcd-hooks/50-ntp.confnu�[���PKڍ]�P�|��q.dhcpcd-hooks/01-testnu�[���PKڍ]J)N���1dhcpcd-hooks/50-timesyncd.confnu�[���PKڍ]5������6dhcpcd-hooks/30-hostnamenu�[���PKڍ]�}t��Edhcpcd-hooks/20-resolv.confnu�[���PK
(^