xref: /netbsd-src/external/bsd/dhcpcd/dist/hooks/50-ypbind (revision 2364920b3bd4919437e996f09f2ca6bf4dc1f9c1)
1*2364920bSroy# Sample dhcpcd hook for ypbind
2*2364920bSroy# This script is only suitable for the BSD versions.
3*2364920bSroy
4*2364920bSroy: ${ypbind_restart_cmd:=service_command ypbind restart}
5*2364920bSroy: ${ypbind_stop_cmd:=service_condcommand ypbind stop}
6*2364920bSroyypbind_dir="$state_dir/ypbind"
7*2364920bSroy: ${ypdomain_dir:=/var/yp}
8*2364920bSroy: ${ypdomain_suffix:=.ypservers}
9*2364920bSroy
10*2364920bSroybest_domain()
11*2364920bSroy{
12*2364920bSroy	for i in "$ypbind_dir/$interface_order".*; do
13*2364920bSroy		if [ -f "$i" ]; then
14*2364920bSroy			cat "$i"
15*2364920bSroy			return 0
16*2364920bSroy		fi
17*2364920bSroy	done
18*2364920bSroy	return 1
19*2364920bSroy}
20*2364920bSroy
21*2364920bSroymake_yp_binding()
22*2364920bSroy{
23*2364920bSroy	[ -d "$ypbind_dir" ] || mkdir -p "$ypbind_dir"
24*2364920bSroy	echo "$new_nis_domain" >"$ypbind_dir/$ifname"
25*2364920bSroy
26*2364920bSroy	if [ -z "$ypdomain_dir" ]; then
27*2364920bSroy		false
28*2364920bSroy	else
29*2364920bSroy		cf="$ypdomain_dir/$new_nis_domain$ypdomain_suffix"
30*2364920bSroy		if [ -n "$new_nis_servers" ]; then
31*2364920bSroy			ncf="$cf.$ifname"
32*2364920bSroy			rm -f "$ncf"
33*2364920bSroy			for x in $new_nis_servers; do
34*2364920bSroy				echo "$x" >>"$ncf"
35*2364920bSroy			done
36*2364920bSroy			change_file "$cf" "$ncf"
37*2364920bSroy		else
38*2364920bSroy			[ -e "$cf" ] && rm "$cf"
39*2364920bSroy		fi
40*2364920bSroy	fi
41*2364920bSroy
42*2364920bSroy	nd="$(best_domain)"
43*2364920bSroy	if [ $? = 0 ] && [ "$nd" != "$(domainname)" ]; then
44*2364920bSroy		domainname "$nd"
45*2364920bSroy		if [ -n "$ypbind_restart_cmd" ]; then
46*2364920bSroy			eval $ypbind_restart_cmd
47*2364920bSroy		fi
48*2364920bSroy	fi
49*2364920bSroy}
50*2364920bSroy
51*2364920bSroyrestore_yp_binding()
52*2364920bSroy{
53*2364920bSroy	rm -f "$ypbind_dir/$ifname"
54*2364920bSroy	nd="$(best_domain)"
55*2364920bSroy	# We need to stop ypbind if there is no best domain
56*2364920bSroy	# otherwise it will just stall as we cannot set domainname
57*2364920bSroy	# to blank :/
58*2364920bSroy	if [ -z "$nd" ]; then
59*2364920bSroy		if [ -n "$ypbind_stop_cmd" ]; then
60*2364920bSroy			eval $ypbind_stop_cmd
61*2364920bSroy		fi
62*2364920bSroy	elif [ "$nd" != "$(domainname)" ]; then
63*2364920bSroy		domainname "$nd"
64*2364920bSroy		if [ -n "$ypbind_restart_cmd" ]; then
65*2364920bSroy			eval $ypbind_restart_cmd
66*2364920bSroy		fi
67*2364920bSroy	fi
68*2364920bSroy}
69*2364920bSroy
70*2364920bSroyif ! $if_configured; then
71*2364920bSroy	;
72*2364920bSroyelif [ "$reason" = PREINIT ]; then
73*2364920bSroy	rm -f "$ypbind_dir/$interface".*
74*2364920bSroyelif $if_up || $if_down; then
75*2364920bSroy	if [ -n "$new_nis_domain" ]; then
76*2364920bSroy		if valid_domainname "$new_nis_domain"; then
77*2364920bSroy			make_yp_binding
78*2364920bSroy		else
79*2364920bSroy			syslog err "Invalid NIS domain name: $new_nis_domain"
80*2364920bSroy		fi
81*2364920bSroy	elif [ -n "$old_nis_domain" ]; then
82*2364920bSroy		restore_yp_binding
83*2364920bSroy	fi
84*2364920bSroyfi
85