410 lines
14 KiB
Diff
410 lines
14 KiB
Diff
|
--- a/client/scripts/bsdos
|
||
|
+++ b/client/scripts/bsdos
|
||
|
@@ -1,40 +1,46 @@
|
||
|
#!/bin/sh
|
||
|
|
||
|
make_resolv_conf() {
|
||
|
+ if [ x"$PEER_DNS" != x ] && [ x$"PEER_DNS" != xyes ]; then
|
||
|
+ return 0
|
||
|
+ fi
|
||
|
+ local 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
|
||
|
+ conf="${conf}search ${new_domain_search}\n"
|
||
|
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
|
||
|
+ conf="${conf}search ${new_domain_name}\n"
|
||
|
fi
|
||
|
for nameserver in $new_domain_name_servers; do
|
||
|
- echo nameserver $nameserver >> /etc/resolv.conf.dhclient
|
||
|
+ conf="${conf}nameserver ${nameserver}\n"
|
||
|
done
|
||
|
-
|
||
|
- mv /etc/resolv.conf.dhclient /etc/resolv.conf
|
||
|
elif [ "x${new_dhcp6_name_servers}" != x ] ; then
|
||
|
- cat /dev/null > /etc/resolv.conf.dhclient6
|
||
|
- chmod 644 /etc/resolv.conf.dhclient6
|
||
|
-
|
||
|
if [ "x${new_dhcp6_domain_search}" != x ] ; then
|
||
|
- echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
|
||
|
+ conf="${conf}search ${new_dhcp6_domain_search}\n"
|
||
|
fi
|
||
|
for nameserver in ${new_dhcp6_name_servers} ; do
|
||
|
# If the nameserver has a link-local address
|
||
|
# add a <zone_id> (interface name) to it.
|
||
|
case $nameserver in
|
||
|
fe80:*) zone_id="%$interface";;
|
||
|
FE80:*) zone_id="%$interface";;
|
||
|
*) zone_id='';;
|
||
|
esac
|
||
|
- echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
|
||
|
+ conf="${conf}nameserver ${nameserver}$zone_id\n"
|
||
|
done
|
||
|
+ fi
|
||
|
|
||
|
- mv /etc/resolv.conf.dhclient6 /etc/resolv.conf
|
||
|
+ if [ x"$conf" != x ]; then
|
||
|
+ conf="# Generated by dhclient or interface $interface\n${conf}"
|
||
|
+ if type resolvconf >/dev/null 2>&1; then
|
||
|
+ printf "${conf}" | resolvconf -a $interface
|
||
|
+ else
|
||
|
+ printf "${conf}" > /etc/resolv.conf
|
||
|
+ chmod 644 /etc/resolv.conf
|
||
|
+ fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
--- a/client/scripts/freebsd
|
||
|
+++ b/client/scripts/freebsd
|
||
|
@@ -11,73 +11,45 @@
|
||
|
fi
|
||
|
|
||
|
make_resolv_conf() {
|
||
|
+ if [ x"$PEER_DNS" != x ] && [ x$"PEER_DNS" != xyes ]; then
|
||
|
+ return 0
|
||
|
+ fi
|
||
|
+ local conf=
|
||
|
if [ x"$new_domain_name_servers" != x ]; then
|
||
|
- ( 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 [ "x$new_domain_search" != x ]; then
|
||
|
- ( echo search $new_domain_search >> /etc/resolv.conf.dhclient )
|
||
|
- exit_status=$?
|
||
|
- 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
|
||
|
- for nameserver in $new_domain_name_servers; do
|
||
|
- 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
|
||
|
+ if [ "x$new_domain_search" != x ]; then
|
||
|
+ conf="${conf}search ${new_domain_search}\n"
|
||
|
+ 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.
|
||
|
+ conf="${conf}search ${new_domain_name}\n"
|
||
|
fi
|
||
|
+ for nameserver in $new_domain_name_servers; do
|
||
|
+ conf="${conf}nameserver ${nameserver}\n"
|
||
|
+ done
|
||
|
elif [ "x${new_dhcp6_name_servers}" != x ] ; then
|
||
|
- ( cat /dev/null > /etc/resolv.conf.dhclient6 )
|
||
|
- exit_status=$?
|
||
|
- if [ $exit_status -ne 0 ] ; then
|
||
|
- $LOGGER "Unable to create /etc/resolv.conf.dhclient6: Error $exit_status"
|
||
|
- else
|
||
|
- if [ "x${new_dhcp6_domain_search}" != x ] ; then
|
||
|
- ( echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6 )
|
||
|
- exit_status=$?
|
||
|
- fi
|
||
|
- for nameserver in ${new_dhcp6_name_servers} ; do
|
||
|
- if [ $exit_status -ne 0 ] ; then
|
||
|
- break
|
||
|
- fi
|
||
|
# If the nameserver has a link-local address
|
||
|
# add a <zone_id> (interface name) to it.
|
||
|
case $nameserver in
|
||
|
fe80:*) zone_id="%$interface";;
|
||
|
FE80:*) zone_id="%$interface";;
|
||
|
*) zone_id='';;
|
||
|
esac
|
||
|
- ( echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6 )
|
||
|
- exit_status=$?
|
||
|
- done
|
||
|
-
|
||
|
- if [ $exit_status -eq 0 ] ; then
|
||
|
- ( mv /etc/resolv.conf.dhclient6 /etc/resolv.conf )
|
||
|
- exit_status=$?
|
||
|
- fi
|
||
|
+ if [ "x${new_dhcp6_domain_search}" != x ] ; then
|
||
|
+ conf="${conf}search ${new_dhcp6_domain_search}\n"
|
||
|
+ fi
|
||
|
+ for nameserver in ${new_dhcp6_name_servers} ; do
|
||
|
+ conf="${conf}nameserver ${nameserver}$zone_id\n"
|
||
|
+ done
|
||
|
+ fi
|
||
|
|
||
|
- if [ $exit_status -ne 0 ] ; then
|
||
|
- $LOGGER "Error while writing new /etc/resolv.conf."
|
||
|
- fi
|
||
|
+ if [ x"$conf" != x ]; then
|
||
|
+ conf="# Generated by dhclient or interface $interface\n${conf}"
|
||
|
+ if type resolvconf >/dev/null 2>&1; then
|
||
|
+ printf "${conf}" | resolvconf -a $interface
|
||
|
+ else
|
||
|
+ printf "${conf}" > /etc/resolv.conf
|
||
|
+ chmod 644 /etc/resolv.conf
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
--- a/client/scripts/linux
|
||
|
+++ b/client/scripts/linux
|
||
|
@@ -26,44 +26,49 @@
|
||
|
ip=/sbin/ip
|
||
|
|
||
|
make_resolv_conf() {
|
||
|
+ if [ x"$PEER_DNS" != x ] && [ x$"PEER_DNS" != xyes ]; then
|
||
|
+ return 0
|
||
|
+ fi
|
||
|
+ local 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
|
||
|
+ if [ "x$new_domain_search" != x ]; then
|
||
|
+ conf="${conf}search ${new_domain_search}\n"
|
||
|
+ 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
|
||
|
+ conf="${conf}search ${new_domain_name}\n"
|
||
|
fi
|
||
|
for nameserver in $new_domain_name_servers; do
|
||
|
- echo nameserver $nameserver >>/etc/resolv.conf.dhclient
|
||
|
+ conf="${conf}nameserver ${nameserver}\n"
|
||
|
done
|
||
|
-
|
||
|
- mv /etc/resolv.conf.dhclient /etc/resolv.conf
|
||
|
elif [ "x${new_dhcp6_name_servers}" != x ] ; then
|
||
|
- cat /dev/null > /etc/resolv.conf.dhclient6
|
||
|
- chmod 644 /etc/resolv.conf.dhclient6
|
||
|
-
|
||
|
if [ "x${new_dhcp6_domain_search}" != x ] ; then
|
||
|
- echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
|
||
|
+ conf="${conf}search ${new_dhcp6_domain_search}\n"
|
||
|
fi
|
||
|
shopt -s nocasematch
|
||
|
for nameserver in ${new_dhcp6_name_servers} ; do
|
||
|
# If the nameserver has a link-local address
|
||
|
# add a <zone_id> (interface name) to it.
|
||
|
if [[ "$nameserver" =~ ^fe80:: ]]
|
||
|
then
|
||
|
zone_id="%$interface"
|
||
|
else
|
||
|
zone_id=
|
||
|
fi
|
||
|
- echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
|
||
|
+ conf="${conf}nameserver ${nameserver}$zone_id\n"
|
||
|
done
|
||
|
shopt -u nocasematch
|
||
|
+ fi
|
||
|
|
||
|
- mv /etc/resolv.conf.dhclient6 /etc/resolv.conf
|
||
|
+ if [ x"$conf" != x ]; then
|
||
|
+ conf="# Generated by dhclient or interface $interface\n${conf}"
|
||
|
+ if type resolvconf >/dev/null 2>&1; then
|
||
|
+ printf "${conf}" | resolvconf -a $interface
|
||
|
+ else
|
||
|
+ printf "${conf}" > /etc/resolv.conf
|
||
|
+ chmod 644 /etc/resolv.conf
|
||
|
+ fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
--- a/client/scripts/netbsd
|
||
|
+++ b/client/scripts/netbsd
|
||
|
@@ -1,40 +1,46 @@
|
||
|
#!/bin/sh
|
||
|
|
||
|
make_resolv_conf() {
|
||
|
- if [ "x$new_domain_name" != x ] && [ 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
|
||
|
+ if [ x"$PEER_DNS" != x ] && [ x$"PEER_DNS" != xyes ]; then
|
||
|
+ return 0
|
||
|
+ fi
|
||
|
+ local conf=
|
||
|
+ if [ x"$new_domain_name_servers" != x ]; then
|
||
|
+ if [ "x$new_domain_search" != x ]; then
|
||
|
+ conf="${conf}search ${new_domain_search}\n"
|
||
|
+ 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
|
||
|
+ conf="${conf}search ${new_domain_name}\n"
|
||
|
fi
|
||
|
for nameserver in $new_domain_name_servers; do
|
||
|
- echo nameserver $nameserver >>/etc/resolv.conf.dhclient
|
||
|
+ conf="${conf}nameserver ${nameserver}\n"
|
||
|
done
|
||
|
-
|
||
|
- mv /etc/resolv.conf.dhclient /etc/resolv.conf
|
||
|
elif [ "x${new_dhcp6_name_servers}" != x ] ; then
|
||
|
- cat /dev/null > /etc/resolv.conf.dhclient6
|
||
|
- chmod 644 /etc/resolv.conf.dhclient6
|
||
|
-
|
||
|
if [ "x${new_dhcp6_domain_search}" != x ] ; then
|
||
|
- echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
|
||
|
+ conf="${conf}search ${new_dhcp6_domain_search}\n"
|
||
|
fi
|
||
|
for nameserver in ${new_dhcp6_name_servers} ; do
|
||
|
# If the nameserver has a link-local address
|
||
|
# add a <zone_id> (interface name) to it.
|
||
|
case $nameserver in
|
||
|
fe80:*) zone_id="%$interface";;
|
||
|
FE80:*) zone_id="%$interface";;
|
||
|
*) zone_id='';;
|
||
|
esac
|
||
|
- echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
|
||
|
+ conf="${conf}nameserver ${nameserver}$zone_id\n"
|
||
|
done
|
||
|
+ fi
|
||
|
|
||
|
- mv /etc/resolv.conf.dhclient6 /etc/resolv.conf
|
||
|
+ if [ x"$conf" != x ]; then
|
||
|
+ conf="# Generated by dhclient or interface $interface\n${conf}"
|
||
|
+ if type resolvconf >/dev/null 2>&1; then
|
||
|
+ printf "${conf}" | resolvconf -a $interface
|
||
|
+ else
|
||
|
+ printf "${conf}" > /etc/resolv.conf
|
||
|
+ chmod 644 /etc/resolv.conf
|
||
|
+ fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
--- a/client/scripts/openbsd
|
||
|
+++ b/client/scripts/openbsd
|
||
|
@@ -1,40 +1,46 @@
|
||
|
#!/bin/sh
|
||
|
|
||
|
make_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
|
||
|
+ if [ x"$PEER_DNS" != x ] && [ x$"PEER_DNS" != xyes ]; then
|
||
|
+ return 0
|
||
|
+ fi
|
||
|
+ local conf=
|
||
|
+ if [ x"$new_domain_name_servers" != x ]; then
|
||
|
+ if [ "x$new_domain_search" != x ]; then
|
||
|
+ conf="${conf}search ${new_domain_search}\n"
|
||
|
+ 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
|
||
|
+ conf="${conf}search ${new_domain_name}\n"
|
||
|
fi
|
||
|
for nameserver in $new_domain_name_servers; do
|
||
|
- echo nameserver $nameserver >>/etc/resolv.conf.dhclient
|
||
|
+ conf="${conf}nameserver ${nameserver}\n"
|
||
|
done
|
||
|
-
|
||
|
- mv /etc/resolv.conf.dhclient /etc/resolv.conf
|
||
|
elif [ "x${new_dhcp6_name_servers}" != x ] ; then
|
||
|
- cat /dev/null > /etc/resolv.conf.dhclient6
|
||
|
- chmod 644 /etc/resolv.conf.dhclient6
|
||
|
-
|
||
|
if [ "x${new_dhcp6_domain_search}" != x ] ; then
|
||
|
- echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
|
||
|
+ conf="${conf}search ${new_dhcp6_domain_search}\n"
|
||
|
fi
|
||
|
for nameserver in ${new_dhcp6_name_servers} ; do
|
||
|
# If the nameserver has a link-local address
|
||
|
# add a <zone_id> (interface name) to it.
|
||
|
case $nameserver in
|
||
|
fe80:*) zone_id="%$interface";;
|
||
|
FE80:*) zone_id="%$interface";;
|
||
|
*) zone_id='';;
|
||
|
esac
|
||
|
- echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
|
||
|
+ conf="${conf}nameserver ${nameserver}$zone_id\n"
|
||
|
done
|
||
|
+ fi
|
||
|
|
||
|
- mv /etc/resolv.conf.dhclient6 /etc/resolv.conf
|
||
|
+ if [ x"$conf" != x ]; then
|
||
|
+ conf="# Generated by dhclient or interface $interface\n${conf}"
|
||
|
+ if type resolvconf >/dev/null 2>&1; then
|
||
|
+ printf "${conf}" | resolvconf -a $interface
|
||
|
+ else
|
||
|
+ printf "${conf}" > /etc/resolv.conf
|
||
|
+ chmod 644 /etc/resolv.conf
|
||
|
+ fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
--- a/client/scripts/solaris
|
||
|
+++ b/client/scripts/solaris
|
||
|
@@ -1,21 +1,39 @@
|
||
|
#!/bin/sh
|
||
|
|
||
|
make_resolv_conf() {
|
||
|
+ if [ x"$PEER_DNS" != x ] && [ x$"PEER_DNS" != xyes ]; then
|
||
|
+ return 0
|
||
|
+ fi
|
||
|
+ local 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
|
||
|
+ if [ "x$new_domain_search" != x ]; then
|
||
|
+ conf="${conf}search ${new_domain_search}\n"
|
||
|
+ 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
|
||
|
+ conf="${conf}search ${new_domain_name}\n"
|
||
|
fi
|
||
|
for nameserver in $new_domain_name_servers; do
|
||
|
- echo nameserver $nameserver >>/etc/resolv.conf.dhclient
|
||
|
+ conf="${conf}nameserver ${nameserver}\n"
|
||
|
+ done
|
||
|
+ elif [ "x${new_dhcp6_name_servers}" != x ] ; then
|
||
|
+ if [ "x${new_dhcp6_domain_search}" != x ] ; then
|
||
|
+ conf="${conf}search ${new_dhcp6_domain_search}\n"
|
||
|
+ fi
|
||
|
+ for nameserver in ${new_dhcp6_name_servers} ; do
|
||
|
+ conf="${conf}nameserver ${nameserver}\n"
|
||
|
done
|
||
|
+ fi
|
||
|
|
||
|
- mv /etc/resolv.conf.dhclient /etc/resolv.conf
|
||
|
+ if [ x"$conf" != x ]; then
|
||
|
+ conf="# Generated by dhclient or interface $interface\n${conf}"
|
||
|
+ if type resolvconf >/dev/null 2>&1; then
|
||
|
+ printf "${conf}" | resolvconf -a $interface
|
||
|
+ else
|
||
|
+ printf "${conf}" > /etc/resolv.conf
|
||
|
+ chmod 644 /etc/resolv.conf
|
||
|
+ fi
|
||
|
fi
|
||
|
}
|
||
|
|