Home | History | Annotate | Download | only in dhcpcd-hooks
      1 # Sample dhcpcd hook for ypbind
      2 # This script is only suitable for the Linux version.
      3 
      4 : ${ypbind_restart_cmd:=service_command ypbind restart}
      5 : ${ypbind_stop_cmd:=service_condcommand ypbind stop}
      6 ypbind_dir="$state_dir/ypbind"
      7 
      8 best_domain()
      9 {
     10 	local i=
     11 
     12 	for i in $interfaces; do
     13 		if [ -e "$ypbind_dir/$i" ]; then
     14 			cat "$ypbind_dir/$i"
     15 		fi
     16 	done
     17 	return 1
     18 }
     19 
     20 make_yp_binding()
     21 {
     22 	[ -d "$ypbind_dir" ] || mkdir -p "$ypbind_dir"
     23 	echo "$new_nis_domain" >"$ypbind_dir/$interface"
     24 	local nd="$(best_domain)"
     25 
     26 	local cf=/var/yp/binding/"$new_nis_domain".ypservers
     27 	if [ -n "$new_nis_servers" ]; then
     28 		local ncf="$cf.$interface" x=
     29 		rm -f "$ncf"
     30 		for x in $new_nis_servers; do
     31 			echo "$x" >>"$ncf"
     32 		done
     33 		change_file "$cf" "$ncf"
     34 	else
     35 		# Because this is not an if .. fi then we can use $? below
     36 		[ -e "$cf" ] && rm "$cf"
     37 	fi
     38 
     39 	if [ $? = 0 -o "$nd" != "$(domainname)" ]; then
     40 		domainname "$nd"
     41 		if [ -n "$ypbind_restart_cmd" ]; then
     42 			eval $ypbind_restart_cmd
     43 		fi
     44 	fi
     45 }
     46 
     47 restore_yp_binding()
     48 {
     49 	rm -f "$ypbind_dir/$interface"
     50 	local nd="$(best_domain)"
     51 	# We need to stop ypbind if there is no best domain
     52 	# otherwise it will just stall as we cannot set domainname
     53 	# to blank :/
     54 	if [ -z "$nd" ]; then
     55 		if [ -n "$ypbind_stop_cmd" ]; then
     56 			eval $ypbind_stop_cmd
     57 		fi
     58 	elif [ "$nd" != "$(domainname)" ]; then
     59 		domainname "$nd"
     60 		if [ -n "$ypbind_restart_cmd" ]; then
     61 			eval $ypbind_restart_cmd
     62 		fi
     63 	fi
     64 }
     65 
     66 if [ "$reason" = PREINIT ]; then
     67 	rm -f "$ypbind_dir/$interface"
     68 elif $if_up || $if_down; then
     69 	if [ -n "$new_nis_domain" ]; then
     70 		make_yp_binding
     71 	elif [ -n "$old_nis_domain" ]; then
     72 		restore_yp_binding
     73 	fi
     74 fi
     75