# Sample dhcpcd hook for ypbind
# This script is only suitable for the Linux version.

ypbind_pid()
{
	[ -s /var/run/ypbind.pid ] && cat /var/run/ypbind.pid
}

make_yp_conf()
{
	[ -z "$new_nis_domain" -a -z "$new_nis_servers" ] && return 0
	local cf=/etc/yp.conf."$interface" prefix= x= pid=
	rm -f "$cf"
	echo "$signature" > "$cf"
	if [ -n "$new_nis_domain" ]; then
		domainname "$new_nis_domain"
		if [ -n "$new_nis_servers" ]; then
			prefix="domain $new_nis_domain server "
		else
			echo "domain $new_nis_domain broadcast" >> "$cf"
		fi
	else
		prefix="ypserver "
	fi
	for x in $new_nis_servers; do
		echo "$prefix$x" >> "$cf"
	done
	save_conf /etc/yp.conf
	cat "$cf" > /etc/yp.conf
	rm -f "$cf"
	pid="$(ypbind_pid)"
	if [ -n "$pid" ]; then
		kill -HUP "$pid"
	fi
}

restore_yp_conf()
{
	[ -n "$old_nis_domain" ] && domainname ""
	restore_conf /etc/yp.conf || return 0
	local pid="$(ypbind_pid)"
	if [ -n "$pid" ]; then
		kill -HUP "$pid"
	fi
}

if $if_up; then
	make_yp_conf
elif $if_down; then
	restore_yp_conf
fi
