aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsysconfig/network-scripts/ifup-eth16
-rw-r--r--sysconfig/network-scripts/network-functions22
2 files changed, 29 insertions, 9 deletions
diff --git a/sysconfig/network-scripts/ifup-eth b/sysconfig/network-scripts/ifup-eth
index dd25d95d..aaf9b0a4 100755
--- a/sysconfig/network-scripts/ifup-eth
+++ b/sysconfig/network-scripts/ifup-eth
@@ -178,10 +178,12 @@ if [ -n "${DYNCONFIG}" -a -x /sbin/dhclient ]; then
fi
done
- if need_hostname; then
- DHCLIENTARGS="${DHCLIENTARGS} ${DHCP_HOSTNAME:+-H $DHCP_HOSTNAME} ${ONESHOT} -q ${DHCLIENTCONF} -lf ${LEASEFILE} -pf /var/run/dhclient-${DEVICE}.pid"
- else
+ if is_hostname_set; then
+ # We already have the hostname ->> send it to DHCP:
DHCLIENTARGS="${DHCLIENTARGS} -H ${DHCP_HOSTNAME:-${HOSTNAME%%.*}} ${ONESHOT} -q ${DHCLIENTCONF} -lf ${LEASEFILE} -pf /var/run/dhclient-${DEVICE}.pid"
+ else
+ # We need to acquire the hostname:
+ DHCLIENTARGS="${DHCLIENTARGS} ${DHCP_HOSTNAME:+-H $DHCP_HOSTNAME} ${ONESHOT} -q ${DHCLIENTCONF} -lf ${LEASEFILE} -pf /var/run/dhclient-${DEVICE}.pid"
fi
echo
@@ -314,10 +316,12 @@ if [[ "${DHCPV6C}" = [Yy1]* ]] && [ -x /sbin/dhclient ]; then
echo
echo -n $"Determining IPv6 information for ${DEVICE}..."
- if need_hostname; then
- DHCLIENTARGS="-6 -1 ${DHCPV6C_OPTIONS} ${DHCLIENTCONF} -lf ${LEASEFILE} -pf /var/run/dhclient6-${DEVICE}.pid ${DHCP_HOSTNAME:+-H $DHCP_HOSTNAME} ${DEVICE}"
- else
+ if is_hostname_set; then
+ # We already have the hostname ->> send it to DHCP:
DHCLIENTARGS="-6 -1 ${DHCPV6C_OPTIONS} ${DHCLIENTCONF} -lf ${LEASEFILE} -pf /var/run/dhclient6-${DEVICE}.pid -H ${DHCP_HOSTNAME:-${HOSTNAME%%.*}} ${DEVICE}"
+ else
+ # We need to acquire the hostname:
+ DHCLIENTARGS="-6 -1 ${DHCPV6C_OPTIONS} ${DHCLIENTCONF} -lf ${LEASEFILE} -pf /var/run/dhclient6-${DEVICE}.pid ${DHCP_HOSTNAME:+-H $DHCP_HOSTNAME} ${DEVICE}"
fi
if /sbin/dhclient "$DHCLIENTARGS"; then
diff --git a/sysconfig/network-scripts/network-functions b/sysconfig/network-scripts/network-functions
index 3c85cd1a..e7be1120 100644
--- a/sysconfig/network-scripts/network-functions
+++ b/sysconfig/network-scripts/network-functions
@@ -307,20 +307,36 @@ END {
[ -d "/sys/class/net/$1" ] && return 0 || return 1
}
-need_hostname ()
+is_hostname_set ()
{
CHECK_HOSTNAME="$(hostname)"
case "$CHECK_HOSTNAME" in
'(none)' | 'localhost' | 'localhost.localdomain')
- return 0
+ # Hostname NOT set:
+ return 1
;;
*)
- return 1
+ # Hostname IS set:
+ return 0
;;
esac
}
+need_hostname ()
+{
+ # Should we avoid obtaining hostname from DHCP? (user override)
+ is_true "${NO_DHCP_HOSTNAME}" && return 1
+
+ if is_hostname_set; then
+ # Hostname is already set, we do not need to acquire it:
+ return 1
+ else
+ # Hostname is NOT set, we need to acquire it:
+ return 0
+ fi
+}
+
set_hostname ()
{
hostname $1