| # Lookup the hostname in DNS if not set |
| |
| lookup_hostname() |
| { |
| [ -z "${new_ip_address}" ] && return 1 |
| local h= |
| # Silly ISC programs love to send error text to stdout |
| if type dig >/dev/null 2>&1; then |
| h=`dig +short -x ${new_ip_address}` |
| if [ $? = 0 ]; then |
| echo "${h}" | sed 's/\.$//' |
| return 0 |
| fi |
| elif type host >/dev/null 2>&1; then |
| h=`host ${new_ip_address}` |
| if [ $? = 0 ]; then |
| echo "${h}" \ |
| | sed 's/.* domain name pointer \(.*\)./\1/' |
| return 0 |
| fi |
| fi |
| return 1 |
| } |
| |
| set_hostname() |
| { |
| if [ -z "${new_host_name}" -a -z "${new_fqdn_name}" ]; then |
| export new_host_name="$(lookup_hostname)" |
| fi |
| } |
| |
| case "${reason}" in |
| BOUND|INFORM|REBIND|REBOOT|RENEW|TIMEOUT) set_hostname;; |
| esac |