# Sample dhcpcd hook for ypbind # This script is only suitable for the Linux version. : ${ypbind_restart_cmd:=service_command ypbind restart} : ${ypbind_stop_cmd:=service_condcommand ypbind stop} ypbind_dir="$state_dir/ypbind" best_domain() { local i= for i in $interfaces; do if [ -e "$ypbind_dir/$i" ]; then cat "$ypbind_dir/$i" fi done return 1 } make_yp_binding() { [ -d "$ypbind_dir" ] || mkdir -p "$ypbind_dir" echo "$new_nis_domain" >"$ypbind_dir/$ifname" local nd="$(best_domain)" local cf=/var/yp/binding/"$new_nis_domain".ypservers if [ -n "$new_nis_servers" ]; then local ncf="$cf.$ifname" x= rm -f "$ncf" for x in $new_nis_servers; do echo "$x" >>"$ncf" done change_file "$cf" "$ncf" else # Because this is not an if .. fi then we can use $? below [ -e "$cf" ] && rm "$cf" fi if [ $? = 0 -o "$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" local 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 [ "$reason" = PREINIT ]; then rm -f "$ypbind_dir/$ifname" 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