Date: Sun, 27 Oct 1996 00:16:00 -0700 (PDT) From: bmah@CS.Berkeley.EDU To: freebsd-gnats-submit@freebsd.org Subject: bin/1900: route(8) add -host does a meaningless nameserver lookup Message-ID: <199610270716.AAA12009@freefall.freebsd.org> Resent-Message-ID: <199610270720.AAA12222@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 1900
>Category: bin
>Synopsis: route(8) add -host does a meaningless nameserver lookup
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Oct 27 00:20:00 PDT 1996
>Last-Modified:
>Originator: Bruce A. Mah
>Organization:
University of California at Berkeley, Computer Science Division
>Release: 2.1.0-RELEASE
>Environment:
FreeBSD wintermute.hip.berkeley.edu 2.1.0-RELEASE FreeBSD 2.1.0-RELEASE #0: Fri Feb 9 17:16:24 PST 1996 bmah@wintermute.hip.berkeley.edu:/usr/src/sys/compile/BMAH1 i386
>Description:
route(8) performs getnetbyname(3) lookups on hostname arguments even
if -host flag is given. This can result in non-intuitive behavior
with respect to /etc/host.conf. Setting host.conf to check hosts
then bind won't necessarily prevent a nameserver lookup during the
command "route add -host hostname gateway", even if both hostname
and gateway are defined in /etc/hosts. Note that it's extremely
unlikely that getnetbyname(3) will return a meaningful answer
in this situation, anyways.
This condition arose when trying to set up a caching-only nameserver
on a host that was (at boot time) not connected to the Internet.
The route(8) commands in /etc/netstart were hanging waiting for the
local named(8) to respond, even though all of the hostname arguments
to route(8) were listed in /etc/hosts and route(8) was given a -host
flag.
I think that 2.1.5-RELEASE and 2.2-CURRENT also have this problem.
>How-To-Repeat:
See above.
>Fix:
*** route.c.orig Wed Sep 14 10:35:37 1994
--- route.c Fri Oct 25 23:27:30 1996
***************
*** 860,866 ****
}
}
if ((val = inet_network(s)) != -1 ||
! ((np = getnetbyname(s)) != NULL && (val = np->n_net) != 0)) {
netdone:
if (which == RTA_DST)
inet_makenetandmask(val, &su->sin);
--- 860,866 ----
}
}
if ((val = inet_network(s)) != -1 ||
! (forcehost == 0 && (np = getnetbyname(s)) != NULL && (val = np->n_net) != 0)) {
netdone:
if (which == RTA_DST)
inet_makenetandmask(val, &su->sin);
>Audit-Trail:
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199610270716.AAA12009>
