# Sample dhcpcd hook for ypbind # This script is only suitable for the BSD versions. : ${ypbind_restart_cmd:=service_command ypbind restart} : ${ypbind_stop_cmd:=service_condcommand ypbind stop} ypbind_dir="$state_dir/ypbind" : ${ypdomain_dir:=} : ${ypdomain_suffix:=} best_domain() { for i in "$ypbind_dir/$interface_order".*; do if [ -f "$i" ]; then cat "$i" return 0 fi done return 1 } make_yp_binding() { [ -d "$ypbind_dir" ] || mkdir -p "$ypbind_dir" echo "$new_nis_domain" >"$ypbind_dir/$ifname" if [ -z "$ypdomain_dir" ]; then false else cf="$ypdomain_dir/$new_nis_domain$ypdomain_suffix" if [ -n "$new_nis_servers" ]; then ncf="$cf.$ifname" rm -f "$ncf" for x in $new_nis_servers; do echo "$x" >>"$ncf" done change_file "$cf" "$ncf" else [ -e "$cf" ] && rm "$cf" fi fi nd="$(best_domain)" if [ $? = 0 ] && [ "$nd" != "$(domainname)" ]; then domainname "$nd" if [ -n "$ypbind_restart_cmd" ]; then eval $ypbind_restart_cmd fi fi } restore_yp_binding() { rm -f "$ypbind_dir/$ifname" nd="$(best_domain)" # We need to stop ypbind if there is no best domain # otherwise it will just stall as we cannot set domainname # to blank :/ if [ -z "$nd" ]; then if [ -n "$ypbind_stop_cmd" ]; then eval $ypbind_stop_cmd fi elif [ "$nd" != "$(domainname)" ]; then domainname "$nd" if [ -n "$ypbind_restart_cmd" ]; then eval $ypbind_restart_cmd fi fi } if ! $if_configured; then ; elif [ "$reason" = PREINIT ]; then rm -f "$ypbind_dir/$interface".* elif $if_up || $if_down; then if [ -n "$new_nis_domain" ]; then if valid_domainname "$new_nis_domain"; then make_yp_binding else syslog err "Invalid NIS domain name: $new_nis_domain" fi elif [ -n "$old_nis_domain" ]; then restore_yp_binding fi fi