194 lines
6.5 KiB
Plaintext
194 lines
6.5 KiB
Plaintext
--- client/dhclient-script.8
|
|
+++ client/dhclient-script.8 2008/08/22 10:05:02
|
|
@@ -45,9 +45,10 @@ any, and also called once if no valid le
|
|
This script is not meant to be customized by the end user. If local
|
|
customizations are needed, they should be possible using the enter and
|
|
exit hooks provided (see HOOKS for details). These hooks will allow the
|
|
-user to override the default behaviour of the client in creating a
|
|
+user to override the default behaviour of the client in applying of
|
|
+additional settings like DNS (e.g. creating a
|
|
.B /etc/resolv.conf
|
|
-file.
|
|
+file), NTP or YP to the system.
|
|
.PP
|
|
No standard client script exists for some operating systems, even though
|
|
the actual client may work, so a pioneering user may well need to create
|
|
@@ -59,14 +60,46 @@ customizing
|
|
.B ETCDIR/dhclient.conf
|
|
or using the enter and exit hooks, please submit a bug report.
|
|
.SH HOOKS
|
|
-When it starts, the client script first defines a shell function,
|
|
-.B make_resolv_conf ,
|
|
-which is later used to create the
|
|
-.B /etc/resolv.conf
|
|
-file. To override the default behaviour, redefine this function in
|
|
-the enter hook script.
|
|
+When it starts, the client script first defines several shell functions:
|
|
+.BR use_netconfig ,
|
|
+.BR netconfig_modify ,
|
|
+.BR netconfig_remove ,
|
|
+.BR make_resolv_conf ,
|
|
+.BR make_ntp_runtime_conf ,
|
|
+.BR restore_resolv_conf ,
|
|
+and
|
|
+.BR remove_ntp_runtime_conf .
|
|
+These functions are later used to apply DNS, NTP, YP, and other additional
|
|
+settings to the system.
|
|
+
|
|
+The
|
|
+.B use_netconfig
|
|
+returns true (0), when the /sbin/netconfig script is supported / installed
|
|
+and enables the use of
|
|
+.B netconfig_modify
|
|
+and
|
|
+.B netconfig_remove
|
|
+functions. See also the netconfig(8) manual page.
|
|
+.br
|
|
+Otherwise, the compatibility functions
|
|
+.BR make_resolv_conf ,
|
|
+.BR restore_resolv_conf ,
|
|
+.BR make_ntp_runtime_conf ,
|
|
+and
|
|
+.B remove_ntp_runtime_conf
|
|
+functions are used. The default implementation of make_resolv_conf is to
|
|
+modify the /etc/resolv.conf file in /sbin/modify_resolvconf script
|
|
+compatible way. The make_ntp_runtime_conf makes use of the /etc/init.d/ntp
|
|
+init script mechanism to apply the NTP server provided by dhcp at runtime.
|
|
+
|
|
+.IR Note :
|
|
+The /sbin/modify_resolvconf script and mechanizm is obsoleted by netconfig
|
|
+and not shipped or supported any more since openSUSE 11.1.
|
|
+
|
|
+To override the default behaviour, redefine these functions in the enter
|
|
+hook script.
|
|
.PP
|
|
-On after defining the make_resolv_conf function, the client script checks
|
|
+On after defining the netconfig functions, the client script checks
|
|
for the presence of an executable
|
|
.B ETCDIR/dhclient-enter-hooks
|
|
script, and if present, it invokes the script inline, using the Bourne
|
|
@@ -220,8 +253,8 @@ the other. Assuming the information pr
|
|
valid, this shouldn't cause any real problems, but it could be
|
|
confusing.
|
|
.SH SEE ALSO
|
|
-dhclient(8), dhcpd(8), dhcrelay(8), dhclient.conf(5) and
|
|
-dhclient.leases(5).
|
|
+dhclient(8), dhcpd(8), dhcrelay(8), dhclient.conf(5),
|
|
+dhclient.leases(5) and netconfig(8).
|
|
.SH AUTHOR
|
|
.B dhclient-script(8)
|
|
has been written for Internet Systems Consortium
|
|
--- client/scripts/linux
|
|
+++ client/scripts/linux 2008/08/22 09:52:12
|
|
@@ -57,6 +57,36 @@ if [ -n "${dhc_dbus}" ]; then
|
|
fi;
|
|
fi;
|
|
|
|
+use_netconfig() {
|
|
+ test -x /sbin/netconfig
|
|
+}
|
|
+
|
|
+netconfig_modify() {
|
|
+ {
|
|
+ echo "INTERFACE='$interface'"
|
|
+ for v in ${!new_*}; do
|
|
+ case $v in
|
|
+ (new_ip_address) k='IPADDR' ;;
|
|
+ (new_subnet_mask) k='NETMASK' ;;
|
|
+ (new_network_number) k='NETWORK' ;;
|
|
+ (new_broadcast_address) k='BROADCAST' ;;
|
|
+ (new_routers) k='GATEWAYS' ;;
|
|
+ (new_domain_name) k='DNSDOMAIN' ;;
|
|
+ (new_domain_name_servers) k='DNSSERVERS' ;;
|
|
+ (new_ntp_servers) k='NTPSERVERS' ;;
|
|
+ (new_nis_domain) k='NISDOMAIN' ;;
|
|
+ (new_nis_servers) k='NISSERVERS' ;;
|
|
+ (new_netbios_name_servers) k='NETBIOSNAMESERVER' ;;
|
|
+ (*) : skip $v ; continue ;;
|
|
+ esac
|
|
+ [ "k${k}" != k ] && echo "${k}='${!v}'"
|
|
+ done
|
|
+ } | /sbin/netconfig modify -s "dhclient3" -i "$interface"
|
|
+}
|
|
+
|
|
+netconfig_remove() {
|
|
+ /sbin/netconfig remove -s "dhclient3" -i "$interface" </dev/null
|
|
+}
|
|
|
|
make_resolv_conf() {
|
|
# first, look if we are allowed to modify resolv.conf:
|
|
@@ -103,14 +133,22 @@ make_resolv_conf() {
|
|
done
|
|
}
|
|
|
|
+restore_resolv_conf() {
|
|
+ # restore backup copy of resolv.conf
|
|
+ if test -f /etc/resolv.conf.saved.by.dhclient ; then
|
|
+ mv -f /etc/resolv.conf.saved.by.dhclient /etc/resolv.conf
|
|
+ fi
|
|
+}
|
|
+
|
|
remove_ntp_runtime_conf() {
|
|
- if test -f "/var/run/ntp/servers.${interface}" ; then
|
|
- rm -f "/var/run/ntp/servers.${interface}"
|
|
+ # remove runtime ntp conf
|
|
+ if test -f "/var/run/ntp/servers.${interface}" ; then
|
|
+ rm -f "/var/run/ntp/servers.${interface}"
|
|
|
|
- if test -x /etc/init.d/ntp ; then
|
|
- /etc/init.d/ntp try-restart
|
|
- fi
|
|
+ if test -x /etc/init.d/ntp ; then
|
|
+ /etc/init.d/ntp try-restart
|
|
fi
|
|
+ fi
|
|
}
|
|
|
|
make_ntp_runtime_conf() {
|
|
@@ -313,8 +351,12 @@ if [ x$reason = xBOUND ] || [ x$reason =
|
|
fi
|
|
fi
|
|
if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 1 ) != 1 )); then
|
|
- make_resolv_conf
|
|
- make_ntp_runtime_conf
|
|
+ if use_netconfig ; then
|
|
+ netconfig_modify
|
|
+ else
|
|
+ make_resolv_conf
|
|
+ make_ntp_runtime_conf
|
|
+ fi
|
|
eval `grep --no-filename "^DHCLIENT_SET_HOSTNAME=" /etc/sysconfig/network/dhcp`
|
|
if [ "$DHCLIENT_SET_HOSTNAME" = yes ] ; then
|
|
|
|
@@ -377,19 +419,22 @@ if [ x$reason = xTIMEOUT ]; then
|
|
for router in $new_routers; do
|
|
route add default gw $router
|
|
done
|
|
- make_resolv_conf
|
|
- make_ntp_runtime_conf
|
|
+ if use_netconfig ; then
|
|
+ netconfig_modify
|
|
+ else
|
|
+ make_resolv_conf
|
|
+ make_ntp_runtime_conf
|
|
+ fi
|
|
exit_with_hooks 0
|
|
fi
|
|
ifconfig $interface inet 0
|
|
exit_with_hooks 1
|
|
fi
|
|
|
|
-# restore backup copy of resolv.conf
|
|
-if test -f /etc/resolv.conf.saved.by.dhclient ; then
|
|
- mv /etc/resolv.conf.saved.by.dhclient /etc/resolv.conf
|
|
+if use_netconfig ; then
|
|
+ netconfig_remove
|
|
+else
|
|
+ restore_resolv_conf
|
|
+ remove_ntp_runtime_conf
|
|
fi
|
|
-# remove runtime ntp conf
|
|
-remove_ntp_runtime_conf
|
|
-
|
|
exit_with_hooks 0
|