diff options
author | David Kaspar [Dee'Kej] <dkaspar@redhat.com> | 2016-11-15 17:21:03 +0100 |
---|---|---|
committer | Lukáš Nykrýn <lnykryn@redhat.com> | 2016-11-16 12:17:54 +0100 |
commit | 2ea1dcf2d22606f4b30ae16a14a736d0d9dddf24 (patch) | |
tree | e2fd5a42d72bfb1b963ea82a0512d5c1ae91f0f6 | |
parent | 02760563d7ea60bf767812aa0cf5cd97d20a2217 (diff) | |
download | initscripts-2ea1dcf2d22606f4b30ae16a14a736d0d9dddf24.tar initscripts-2ea1dcf2d22606f4b30ae16a14a736d0d9dddf24.tar.gz initscripts-2ea1dcf2d22606f4b30ae16a14a736d0d9dddf24.tar.bz2 initscripts-2ea1dcf2d22606f4b30ae16a14a736d0d9dddf24.tar.xz initscripts-2ea1dcf2d22606f4b30ae16a14a736d0d9dddf24.zip |
sysconfig/network: NO_DHCP_HOSTNAME option introduced
Previously, some administrators were unable to force initscripts to
not obtatin hostname from DHCP, even though they were using static
configuration of network. Righ now, setting 'NO_DHCP_HOSTNAME' to
'yes', 'true' or '1' in /etc/sysconfig/network will allow them to do so.
-rwxr-xr-x | sysconfig/network-scripts/ifup-eth | 16 | ||||
-rw-r--r-- | sysconfig/network-scripts/network-functions | 22 |
2 files changed, 29 insertions, 9 deletions
diff --git a/sysconfig/network-scripts/ifup-eth b/sysconfig/network-scripts/ifup-eth index e884fa73..7f21477c 100755 --- a/sysconfig/network-scripts/ifup-eth +++ b/sysconfig/network-scripts/ifup-eth @@ -186,10 +186,12 @@ if [ -n "${DYNCONFIG}" ] && [ -x /sbin/dhclient ]; then generate_config_file_name generate_lease_file_name - 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 @@ -333,10 +335,12 @@ if is_true "${DHCPV6C}" && [ -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 4ff6b988..46db1cab 100644 --- a/sysconfig/network-scripts/network-functions +++ b/sysconfig/network-scripts/network-functions @@ -353,20 +353,36 @@ is_available_wait () return $ret } -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 |