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