Re: cvs commit: src/etc/rc.d hostname

From: Yar Tikhiy <yar_at_comp.chem.msu.su>
Date: Thu, 15 Feb 2007 09:57:43 +0300
On Tue, Feb 13, 2007 at 10:19:27AM -0600, Brooks Davis wrote:
> On Tue, Feb 13, 2007 at 10:04:36AM +0300, Yar Tikhiy wrote:
> > On Mon, Feb 12, 2007 at 09:03:33AM -0600, Brooks Davis wrote:
> > > On Mon, Feb 12, 2007 at 03:09:09PM +0300, Yar Tikhiy wrote:
> > > > On Sun, Feb 11, 2007 at 09:44:38PM -0600, Brooks Davis wrote:
> > > > > On Sun, Feb 11, 2007 at 11:53:17AM +0300, Yar Tikhiy wrote:
> > > > > > On Sat, Feb 10, 2007 at 08:52:28PM +0000, Ceri Davies wrote:
> > > > > > > On Sat, Feb 10, 2007 at 01:13:33PM +0000, Yar Tikhiy wrote:
> > > > > > > > yar         2007-02-10 13:13:33 UTC
> > > > > > > > 
> > > > > > > >   FreeBSD src repository
> > > > > > > > 
> > > > > > > >   Modified files:
> > > > > > > >     etc/rc.d             hostname 
> > > > > > > >   Log:
> > > > > > > >   Handle the case when the admin forgot to set $hostname,
> > > > > > > >   which can happen in new installations: advise to set the
> > > > > > > >   variable and refer to rc.conf(5).
> > > > > > > 
> > > > > > > Isn't it possible for the hostname to come via DHCP?  How does this
> > > > > > > behave in that case (or rather, I can see how it behaves; is that the
> > > > > > > right thing)?
> > > > > > 
> > > > > > I've never played with setting the hostname via DHCP.  In my change,
> > > > > > I just tried not to break the existing code related to DHCP.  Perhaps
> > > > > > someone using DHCP to get the hostname could shed light on the topic.
> > > > > 
> > > > > This appears mostly harmless for systems that get their hostname via
> > > > > DHCP.  They will get a warning, but it will otherwise work.
> > > > 
> > > > Now I see.  The code getting $hostname via kenv from dhcp.host-name
> > > > is for the case when the host was booted via PXE.  OTOH, a usual
> > > > DHCP client will run dhclient when it comes to setting up network
> > > > interfaces, i.e., after /etc/rc.d/hostname.  Perhaps we need
> > > > a way to indicate that the hostname will be assigned automatically
> > > > and the nagging message shouldn't be emitted.  E.g., in rc.conf:
> > > > 
> > > > hostname="DHCP"
> > > > 
> > > > I have no idea how many Unix hosts allow their hostname to be set
> > > > via DHCP.  I prefer to think that a Unix host is like a good ship:
> > > > it never changes its name while furrowing the network seas.  A DHCP
> > > > assigned hostname better fits crippled hosts such as diskless
> > > > stations etc.
> > > 
> > > I wrote patches many years ago that added a "default_hostname" variable
> > > which acted like hostname except that dhclient-script knew about it and
> > > would change the host name to one it was give.  This is the right thing
> > > to do IMO because many applications break horribly if hostname is not
> > > set.
> > 
> > OTOH, booting a DHCP-configured laptop without a network connection
> > can result in its not having the hostname set at all.  This can
> > warrant making $hostname a mandatory variable even for DHCP clients.
> > dhclient will change the hostname if it gets a new value from the
> > server.  Changing the default hostname to a DHCP value isn't worse
> > than changing the null hostname, so the former shouldn't break any
> > apps not broken yet.  I mean that dhclient may do the change a bit
> > too late into the boot sequence if the DHCP server doesn't respond
> > instantly.
> 
> dhclient will not change the hostname if it is set and this is probably
> the right behavior for most people.  If we're going to make hostname
> manditory, we need to provide an option to that dhclient can override
> the hostname if that's what the administrator prefers.

For now, I've just taught /etc/rc.d/hostname not to emit the warning
if DHCP is used on any interface.

-- 
Yar
Received on Thu Feb 15 2007 - 06:57:49 UTC