From owner-freebsd-current Mon Nov 4 15:45:13 2002 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4B7B737B401; Mon, 4 Nov 2002 15:45:12 -0800 (PST) Received: from pimout1-ext.prodigy.net (pimout1-ext.prodigy.net [207.115.63.77]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3476443E77; Mon, 4 Nov 2002 15:45:11 -0800 (PST) (envelope-from kbyanc@posi.net) Received: from gateway.posi.net (adsl-63-201-92-224.dsl.snfc21.pacbell.net [63.201.92.224]) by pimout1-ext.prodigy.net (8.12.3 da nor stuldap/8.12.3) with ESMTP id gA4Nj9Rd521902; Mon, 4 Nov 2002 18:45:09 -0500 Received: from localhost (localhost [127.0.0.1]) by gateway.posi.net (8.12.6/8.12.5) with ESMTP id gA4Nj6OQ050562; Mon, 4 Nov 2002 15:45:07 -0800 (PST) (envelope-from kbyanc@posi.net) Date: Mon, 4 Nov 2002 15:45:06 -0800 (PST) From: Kelly Yancey To: Terry Lambert Cc: Hidetoshi Shimokawa , Doug Barton , , Subject: Re: Can't resolve hosts via dns on the command line with latest-current In-Reply-To: <3DC6DE7C.40A78C43@mindspring.com> Message-ID: <20021104153745.X50554-100000@gateway.posi.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Mon, 4 Nov 2002, Terry Lambert wrote: > Kelly Yancey wrote: > > I suspect something in lib/libc/net/res_send.c is using special knowledge of > > the contents of the socket buffer so calculate the real amount of data that > > can be read (which this patch does automatically). I'm looking into it. > > ...To ensure that the read does not block, and is not issued > until sufficient data exists. > > -- Terry > It doesn't matter. It isn't just DNS lookups, mountd fails to run too because it cannot connect to portmap via localhost. Oddly, in both cases sendto() is returning with errno = 49 (EADDRNOTAVAIL). I've tracked it down to this code in sys/netinet/ip_output.c: /* 127/8 must not appear on wire - RFC1122. */ if ((ntohl(ip->ip_dst.s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET || (ntohl(ip->ip_src.s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET) { if ((ifp->if_flags & IFF_LOOPBACK) == 0) { ipstat.ips_badaddr++; error = EADDRNOTAVAIL; goto bad; } } Which was last modified in revision 1.150 back in February. However, I still don't see how adding an extra counter to the sockbuf could possibly change the set of events required to get to this code, but it is certainly what is causing EADDRNOTAVAIL to be returned. Needless to say, I'm still researching it. Kelly -- Kelly Yancey -- kbyanc@{posi.net,FreeBSD.org} FreeBSD, The Power To Serve: http://www.freebsd.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message