Subject: Re: HEADS UP: nsswitch about to go `live' in NetBSD-current
To: Wolfgang Rupprecht <wolfgang@wsrcc.com>
From: Luke Mewburn <lukem@cs.rmit.edu.au>
List: current-users
Date: 01/17/1999 17:00:13
Some points (relating to this and other issues):

1.	The back-end nsswitch dispatcher (nsdispatch(3)) is a
	generic routine. For safety, if /etc/nsswitch.conf is
	absent, corrupt, or doesn't have an appropriate entry
	for the database requested, a source list of `files'
	will be returned.

	Whilst it is used by functions such as gethostbyname(3)
	for `hosts' lookups, getpwent(3) for `passwd' lookups,
	nsdispatch(3) doesn't need to know what the lookups are
	because it is generic.

	I strongly feel that putting in a hack into a generic
	libc routine to provide a specific default of `dns files'
	for `hosts' is not the correct orthagonal thing to do.
	It reeks of a hack, even if it is to maintain prior
	behaviour. I'd object to a similar hack to support
	`passwd: compat' by default too.

	As I've mentioned a few times; if we
		a) ship an working nsswitch.conf in /usr/src/etc that
		   maintains the behaviour that most people want
		b) prompt the user at install time incase they wish to
		   override this
		b) document in the INSTALL notes the the need to have
		   /etc/nsswitch.conf with `hosts:  .. dns ...' to get
		   DNS lookups
	then what's the problem? If upgrading user's don't read
	INSTALL notes, don't do a diff of etc.tar.gz, and things
	don't work then what more can we do to support people
	such as them?


2.	*If* the dispatch code was modified to provide a default
	(as Todd and others ask for), the argument then turns to
	``what do you make as the default''?

	Some people would want `dns files'.

	Others (including myself) would want `files dns', because
	it's `safer' (such as when you depend upon lookups to
	determine ifconfig/route information, and you have that
	in /etc/hosts, otherwise you introduce long delays at
	boot as the DNS lookups timeout). Michael K. Sanders also
	points out that you have `files dns' to prevent DNS spoofing
	of these addresses.


3. 	Wolfgang Rupprecht mentions:
	> Thanks!  I was wondering if I was the only one that had a
	> fondness for the traditional BSD defaults.
	> 
	> 	file-only before named/network is up
	> 	dns-only after named/network is up
	> 
	> Can't we please at least have the default (if the nswitch
	> file doesn't exist) be the current status quo???  

	As far as I'm aware, the behaviour mentioned (files only
	before network is available, dns only after) hasn't been
	in use in NetBSD or other systems I've checked such as
	Solaris and ULTRIX. In all three cases the lookups remain
	the way they were defined at boot time.

	If Wolfgang wants the behaviour he mentions he'd have to
	add something to /etc/rc which changes /etc/nsswitch.conf
	after the networking is up and running.

	Alternatively, he could just put `hosts: files dns' in
	/etc/nsswitch.conf, and keep /etc/hosts uptodate with those
	critical hostnames you need at boot...


Luke.