Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 May 2000 13:07:59 -0700
From:      Brooks Davis <brooks@one-eyed-alien.net>
To:        freebsd-hackers@freebsd.org
Subject:   Proposed fix for DHCP and hostname
Message-ID:  <20000510130759.A6475@orion.ac.hmc.edu>

next in thread | raw e-mail | index | archive | help
Hi,

There's a long standing issue where you can either have a hardwired
hostname and have it all the time or you can get your hostname from DHCP
and not have one unless you set it manualy while not networked.  I have
hacked up a solution which I think avoids POLA violations.  My only
concern with it is the new program to get variables out of
/etc/defaults/rc.conf and the like called rc_conf_var.  In general the
idea of a program to do that is something we're going to need it we want
to move to a more machine editable config file format (dare I say, XML
based ;-).  The following patch should work, but I've never made a patch
that added files before, so I'm not sure.  Please provide feedback on
this solution.  I've seen complaints about this since DHCP was added to
the base, so I'd like to get it comitted.

-- Brooks

-- 
Any statement of the form "X is the one, true Y" is FALSE.

--- /usr/src/etc/rc.network	Tue May  9 15:00:17 2000
+++ /etc/rc.network	Wed May 10 09:51:03 2000
@@ -16,8 +16,13 @@
 	# Set the host name if it is not already set
 	#
 	if [ -z "`hostname -s`" ]; then
-		hostname ${hostname}
-		echo -n ' hostname'
+		if [ -n "${hostname}" ]; then
+			hostname ${hostname}
+			echo -n ' hostname'
+		elif [ -n "${default_hostname}" ]; then
+			hostname ${default_hostname}
+			echo -n ' default_hostname'
+		fi
 	fi
 
 	# Set the domainname if we're using NIS
--- /usr/src/etc/defaults/rc.conf	Tue May  9 15:00:17 2000
+++ /etc/defaults/rc.conf	Tue May  9 21:22:16 2000
@@ -39,6 +39,7 @@
 
 ### Basic network options: ###
 hostname=""			# Set this!
+default_hostname=""		# Set this if you get your hostname elseware.
 nisdomainname="NO"		# Set to NIS domain if using NIS (or NO).
 dhcp_program="/sbin/dhclient"	# Path to dhcp client program.
 dhcp_flags=""			# Additional flags to pass to dhcp client.
--- /usr/src/contrib/isc-dhcp/client/scripts/freebsd	Sat Jan 15 14:46:40 2000
+++ /sbin/dhclient-script	Tue May  9 21:44:59 2000
@@ -76,7 +76,7 @@
 if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
    [ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then
   current_hostname=`/bin/hostname`
-  if [ x$current_hostname = x ] || \
+  if [ x$current_hostname = x`rc_conf_var default_hostname` ] || \
      [ x$current_hostname = x$old_host_name ]; then
     if [ x$new_host_name != x$old_host_name ]; then
       $LOGGER "New Hostname: $new_host_name"
--- /sbin/rc_conf_var.orig	Wed May 10 11:19:16 2000
+++ /sbin/rc_conf_var	Tue May  9 21:40:06 2000
@@ -0,0 +1,13 @@
+#!/bin/sh
+# $FreeBSD$
+
+# If there is a global system configuration file, suck it in.
+#
+if [ -r /etc/defaults/rc.conf ]; then
+	. /etc/defaults/rc.conf
+	source_rc_confs
+elif [ -r /etc/rc.conf ]; then
+	. /etc/rc.conf
+fi
+
+eval echo \$${1}


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000510130759.A6475>