blob: 9a1feccd1f2d0da46ecca29dbf7bdeb0f4d75d1c [file] [log] [blame]
Dmitry Shmidte86eee12011-01-24 16:27:51 -08001# 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}
6ypbind_dir="$state_dir/ypbind"
7
8best_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
20make_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
47restore_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
66if [ "$reason" = PREINIT ]; then
67 rm -f "$ypbind_dir/$interface"
68elif $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
74fi