blob: 9a1feccd1f2d0da46ecca29dbf7bdeb0f4d75d1c [file] [log] [blame]
# 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/$interface"
local nd="$(best_domain)"
local cf=/var/yp/binding/"$new_nis_domain".ypservers
if [ -n "$new_nis_servers" ]; then
local ncf="$cf.$interface" 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/$interface"
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/$interface"
elif $if_up || $if_down; then
if [ -n "$new_nis_domain" ]; then
make_yp_binding
elif [ -n "$old_nis_domain" ]; then
restore_yp_binding
fi
fi