summaryrefslogtreecommitdiff
path: root/client/scripts
diff options
context:
space:
mode:
authorDavid Hankins <dhankins@isc.org>2006-07-22 02:24:16 +0000
committerDavid Hankins <dhankins@isc.org>2006-07-22 02:24:16 +0000
commitdba5803b955ada381d137b946f96cbb3604421ce (patch)
treefbeedd8ec7cddfa9484d74b7cb6291d66564d59e /client/scripts
parent8f4c32a1012bce633c6292d6d935b50cb093496f (diff)
downloadisc-dhcp-dba5803b955ada381d137b946f96cbb3604421ce.tar.gz
- Support for compressed 'domain name list' style DHCP option contents, andDHCPv6_parsing_base
in particular the domain search option (#119) was added. [ISC-Bugs #15934]
Diffstat (limited to 'client/scripts')
-rwxr-xr-xclient/scripts/bsdos16
-rwxr-xr-xclient/scripts/freebsd40
-rwxr-xr-xclient/scripts/linux18
-rwxr-xr-xclient/scripts/netbsd14
-rw-r--r--client/scripts/nextstep16
-rw-r--r--client/scripts/openbsd16
-rwxr-xr-xclient/scripts/solaris16
7 files changed, 105 insertions, 31 deletions
diff --git a/client/scripts/bsdos b/client/scripts/bsdos
index d076d92d..fb0d43f2 100755
--- a/client/scripts/bsdos
+++ b/client/scripts/bsdos
@@ -1,11 +1,21 @@
#!/bin/sh
make_resolv_conf() {
- if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
- echo search $new_domain_name >/etc/resolv.conf
+ if [ x"$new_domain_name_servers" != x ]; then
+ cat /dev/null > /etc/resolv.conf.dhclient
+ if [ "x$new_domain_search" != x ]; then
+ echo search $new_domain_search >> /etc/resolv.conf.dhclient
+ elif [ "x$new_domain_name" != x ]; then
+ # Note that the DHCP 'Domain Name Option' is really just a domain
+ # name, and that this practice of using the domain name option as
+ # a search path is both nonstandard and deprecated.
+ echo search $new_domain_name >> /etc/resolv.conf.dhclient
+ fi
for nameserver in $new_domain_name_servers; do
- echo nameserver $nameserver >>/etc/resolv.conf
+ echo nameserver $nameserver >> /etc/resolv.conf.dhclient
done
+
+ mv /etc/resolv.conf.dhclient /etc/resolv.conf
fi
}
diff --git a/client/scripts/freebsd b/client/scripts/freebsd
index 2f0623ef..b40316eb 100755
--- a/client/scripts/freebsd
+++ b/client/scripts/freebsd
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $Id: freebsd,v 1.16 2005/03/17 20:14:56 dhankins Exp $
+# $Id: freebsd,v 1.17 2006/07/22 02:24:16 dhankins Exp $
#
# $FreeBSD$
@@ -12,24 +12,38 @@ fi
make_resolv_conf() {
if [ x"$new_domain_name_servers" != x ]; then
- if [ "x$new_domain_name" != x ]; then
- ( echo search $new_domain_name >/etc/resolv.conf )
- exit_status=$?
+ ( cat /dev/null > /etc/resolv.conf.dhclient )
+ exit_status=$?
+ if [ $exit_status -ne 0 ]; then
+ $LOGGER "Unable to create /etc/resolv.conf.dhclient: Error $exit_status"
else
- if [ -e /etc/resolv.conf ] ; then
- ( rm /etc/resolv.conf )
+ if [ "x$new_domain_search" != x ]; then
+ ( echo search $new_domain_search >> /etc/resolv.conf.dhclient )
exit_status=$?
- else
- ( touch /etc/resolv.conf )
+ elif [ "x$new_domain_name" != x ]; then
+ # Note that the DHCP 'Domain Name Option' is really just a domain
+ # name, and that this practice of using the domain name option as
+ # a search path is both nonstandard and deprecated.
+ ( echo search $new_domain_name >> /etc/resolv.conf.dhclient )
exit_status=$?
fi
- fi
- if [ $exit_status -ne 0 ]; then
- $LOGGER "WARNING: Unable to update resolv.conf: Error $exit_status"
- else
for nameserver in $new_domain_name_servers; do
- ( echo nameserver $nameserver >>/etc/resolv.conf )
+ if [ $exit_status -ne 0 ]; then
+ break
+ fi
+ ( echo nameserver $nameserver >>/etc/resolv.conf.dhclient )
+ exit_status=$?
done
+
+ # If there were no errors, attempt to mv the new file into place.
+ if [ $exit_status -eq 0 ]; then
+ ( mv /etc/resolv.conf.dhclient /etc/resolv.conf )
+ exit_status = $?
+ fi
+
+ if [ $exit_status -ne 0 ]; then
+ $LOGGER "Error while writing new /etc/resolv.conf."
+ fi
fi
fi
}
diff --git a/client/scripts/linux b/client/scripts/linux
index 31ddd2fe..787efff2 100755
--- a/client/scripts/linux
+++ b/client/scripts/linux
@@ -23,12 +23,22 @@
# of the $1 in its args.
make_resolv_conf() {
- if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
- echo search $new_domain_name >/etc/resolv.conf
- chmod 644 /etc/resolv.conf
+ if [ x"$new_domain_name_servers" != x ]; then
+ cat /dev/null > /etc/resolv.conf.dhclient
+ chmod 644 /etc/resolv.conf.dhclient
+ if [ x"$new_domain_search" != x ]; then
+ echo search $new_domain_search >> /etc/resolv.conf.dhclient
+ elif [ x"$new_domain_name" != x ]; then
+ # Note that the DHCP 'Domain Name Option' is really just a domain
+ # name, and that this practice of using the domain name option as
+ # a search path is both nonstandard and deprecated.
+ echo search $new_domain_name >> /etc/resolv.conf.dhclient
+ fi
for nameserver in $new_domain_name_servers; do
- echo nameserver $nameserver >>/etc/resolv.conf
+ echo nameserver $nameserver >>/etc/resolv.conf.dhclient
done
+
+ mv /etc/resolv.conf.dhclient /etc/resolv.conf
fi
}
diff --git a/client/scripts/netbsd b/client/scripts/netbsd
index d226cdff..3de6b555 100755
--- a/client/scripts/netbsd
+++ b/client/scripts/netbsd
@@ -2,10 +2,20 @@
make_resolv_conf() {
if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
- echo search $new_domain_name >/etc/resolv.conf
+ cat /dev/null > /etc/resolv.conf.dhclient
+ if [ "x$new_domain_search != x ]; then
+ echo search $new_domain_search >> /etc/resolv.conf.dhclient
+ elif [ "x$new_domain_name != x ]; then
+ # Note that the DHCP 'Domain Name Option' is really just a domain
+ # name, and that this practice of using the domain name option as
+ # a search path is both nonstandard and deprecated.
+ echo search $new_domain_name >> /etc/resolv.conf.dhclient
+ fi
for nameserver in $new_domain_name_servers; do
- echo nameserver $nameserver >>/etc/resolv.conf
+ echo nameserver $nameserver >>/etc/resolv.conf.dhclient
done
+
+ mv /etc/resolv.conf.dhclient /etc/resolv.conf
fi
}
diff --git a/client/scripts/nextstep b/client/scripts/nextstep
index 7600fb14..b80d175a 100644
--- a/client/scripts/nextstep
+++ b/client/scripts/nextstep
@@ -31,11 +31,21 @@ if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
route add default $router 1 >/dev/null 2>&1
done
fi
- if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
- echo search $new_domain_name >/etc/resolv.conf
+ if [ x"$new_domain_name_servers" != x ]; then
+ cat /dev/null > /etc/resolv.conf.dhclient
+ if [ "x$new_domain_search != x ]; then
+ echo search $new_domain_search >> /etc/resolv.conf.dhclient
+ elif [ "x$new_domain_name != x ]; then
+ # Note that the DHCP 'Domain Name Option' is really just a domain
+ # name, and that this practice of using the domain name option as
+ # a search path is both nonstandard and deprecated.
+ echo search $new_domain_name >> /etc/resolv.conf.dhclient
+ fi
for nameserver in $new_domain_name_servers; do
- echo nameserver $nameserver >>/etc/resolv.conf
+ echo nameserver $nameserver >>/etc/resolv.conf.dhclient
done
+
+ mv /etc/resolv.conf.dhclient /etc/resolv.conf
fi
exit 0
fi
diff --git a/client/scripts/openbsd b/client/scripts/openbsd
index d076d92d..64fead2e 100644
--- a/client/scripts/openbsd
+++ b/client/scripts/openbsd
@@ -1,11 +1,21 @@
#!/bin/sh
make_resolv_conf() {
- if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
- echo search $new_domain_name >/etc/resolv.conf
+ if x"$new_domain_name_servers" != x ]; then
+ cat /dev/null > /etc/resolv.conf.dhclient
+ if [ x"$new_domain_search" != x ]; then
+ echo search $new_domain_search >> /etc/resolv.conf.dhclient
+ elif [ x"$new_domain_name" != x ]; then
+ # Note that the DHCP 'Domain Name Option' is really just a domain
+ # name, and that this practice of using the domain name option as
+ # a search path is both nonstandard and deprecated.
+ echo search $new_domain_name >> /etc/resolv.conf.dhclient
+ fi
for nameserver in $new_domain_name_servers; do
- echo nameserver $nameserver >>/etc/resolv.conf
+ echo nameserver $nameserver >>/etc/resolv.conf.dhclient
done
+
+ mv /etc/ersolv.conf.dhclient /etc/resolv.conf
fi
}
diff --git a/client/scripts/solaris b/client/scripts/solaris
index e6187c71..c2403dc3 100755
--- a/client/scripts/solaris
+++ b/client/scripts/solaris
@@ -1,11 +1,21 @@
#!/bin/sh
make_resolv_conf() {
- if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
- echo search $new_domain_name >/etc/resolv.conf
+ if [ x"$new_domain_name_servers" != x ]; then
+ cat /dev/null > /etc/resolv.conf.dhclient
+ if [ x"$new_domain_search" != x ]; then
+ echo search $new_domain_search >> /etc/resolv.conf.dhclient
+ elif [ x"$new_domain_name" != x ]; then
+ # Note that the DHCP 'Domain Name Option' is really just a domain
+ # name, and that this practice of using the domain name option as
+ # a search path is both nonstandard and deprecated.
+ echo search $new_domain_name >> /etc/resolv.conf.dhclient
+ fi
for nameserver in $new_domain_name_servers; do
- echo nameserver $nameserver >>/etc/resolv.conf
+ echo nameserver $nameserver >>/etc/resolv.conf.dhclient
done
+
+ mv /etc/resolv.conf.dhclient /etc/resolv.conf
fi
}