From owner-freebsd-hackers@FreeBSD.ORG Tue Mar 23 09:20:37 2004 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 123F016A4CE; Tue, 23 Mar 2004 09:20:37 -0800 (PST) Received: from cheer.mahoroba.org (flets20-050.kamome.or.jp [218.45.20.50]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6760943D31; Tue, 23 Mar 2004 09:20:36 -0800 (PST) (envelope-from ume@FreeBSD.org) Received: from lyrics.mahoroba.org (IDENT:p1HLdt3+CKawOnPVf833zSnR5dBJwcmsy5rNYfQfxzFptNLtZATL4dIEabm9+9Ix@lyrics.mahoroba.org [IPv6:3ffe:501:185b:8010:280:88ff:fe03:4841]) (user=ume mech=CRAM-MD5 bits=0)i2NHKQgE080105; Wed, 24 Mar 2004 02:20:26 +0900 (JST) (envelope-from ume@FreeBSD.org) Date: Wed, 24 Mar 2004 02:20:26 +0900 Message-ID: From: Hajimu UMEMOTO To: Brooks Davis In-Reply-To: <20040312170629.GB7661@Odin.AC.HMC.Edu> References: <20040312010000.GA9949@Odin.AC.HMC.Edu> <200403121051.aa75277@salmon.maths.tcd.ie> <20040312170629.GB7661@Odin.AC.HMC.Edu> User-Agent: xcite1.38> Wanderlust/2.11.3 (Wonderwall) SEMI/1.14.5 (Awara-Onsen) FLIM/1.14.5 (Demachiyanagi) APEL/10.6 Emacs/21.3 (i386--freebsd) MULE/5.0 (=?ISO-2022-JP?B?GyRCOC1MWhsoQg==?=) X-Operating-System: FreeBSD 5.2-CURRENT MIME-Version: 1.0 (generated by SEMI 1.14.5 - "Awara-Onsen") Content-Type: text/plain; charset=US-ASCII X-Virus-Scanned: by amavisd-new X-Spam-Status: No, hits=0.0 required=5.0 tests=none autolearn=no version=2.63 X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on cheer.mahoroba.org cc: David Malone cc: hackers@freebsd.org cc: dwmalone@freebsd.org Subject: Re: inetd needs "discard" service in /etc/services X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Mar 2004 17:20:37 -0000 Hi, >>>>> On Fri, 12 Mar 2004 09:06:30 -0800 >>>>> Brooks Davis said: brooks> Nope, I tried that. It turns out there's an annoying edge case that brooks> makes it not work in this case (from line 496): brooks> * check for special cases. (1) numeric servname is disallowed if brooks> * socktype/protocol are left unspecified. (2) servname is disallowed brooks> * for raw and other inet{,6} sockets. How about this patch? Index: usr.sbin/inetd/inetd.c diff -u -p usr.sbin/inetd/inetd.c.orig usr.sbin/inetd/inetd.c --- usr.sbin/inetd/inetd.c.orig Sat Nov 1 04:39:15 2003 +++ usr.sbin/inetd/inetd.c Tue Mar 23 17:41:17 2004 @@ -403,12 +403,16 @@ main(int argc, char **argv) * getaddrinfo(). But getaddrinfo() requires at least one of * hostname or servname is non NULL. * So when hostname is NULL, set dummy value to servname. + * Since getaddrinfo() doesn't accept numeric servname, and + * we doesn't use ai_socktype of struct addrinfo returned + * from getaddrinfo(), we set dummy value to ai_socktype. */ - servname = (hostname == NULL) ? "discard" /* dummy */ : NULL; + servname = (hostname == NULL) ? "0" /* dummy */ : NULL; bzero(&hints, sizeof(struct addrinfo)); hints.ai_flags = AI_PASSIVE; hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; /* dummy */ error = getaddrinfo(hostname, servname, &hints, &res); if (error != 0) { syslog(LOG_ERR, "-a %s: %s", hostname, gai_strerror(error)); brooks> The real problem is that we should either not use getaddrinfo to make brooks> sockaddrs or we should do it on demand when we actually have what we brooks> need (i.e. a service name and protocol). It seems NetBSD's inetd do it on demand. Sincerely, -- Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan ume@mahoroba.org ume@{,jp.}FreeBSD.org http://www.imasy.org/~ume/