From owner-freebsd-net@FreeBSD.ORG Fri Jan 12 22:13:16 2007 Return-Path: X-Original-To: freebsd-net@freebsd.org Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 31A0C16A40F for ; Fri, 12 Jan 2007 22:13:16 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from out5.smtp.messagingengine.com (out5.smtp.messagingengine.com [66.111.4.29]) by mx1.freebsd.org (Postfix) with ESMTP id 09F0713C455 for ; Fri, 12 Jan 2007 22:13:15 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from out1.internal (unknown [10.202.2.149]) by out1.messagingengine.com (Postfix) with ESMTP id C92247B277; Fri, 12 Jan 2007 17:08:59 -0500 (EST) Received: from heartbeat1.messagingengine.com ([10.202.2.160]) by out1.internal (MEProxy); Fri, 12 Jan 2007 17:08:59 -0500 X-Sasl-enc: 1bHH111HhkVkaRMOWLRzPPdqjwQ3Hsif8kqGPIX6tt9K 1168639739 Received: from [192.168.123.18] (82-35-112-254.cable.ubr07.dals.blueyonder.co.uk [82.35.112.254]) by mail.messagingengine.com (Postfix) with ESMTP id 06FE7146DE; Fri, 12 Jan 2007 17:08:57 -0500 (EST) Message-ID: <45A807F8.7080603@FreeBSD.org> Date: Fri, 12 Jan 2007 22:13:12 +0000 From: "Bruce M. Simpson" User-Agent: Thunderbird 1.5.0.5 (X11/20060825) MIME-Version: 1.0 To: Ricardo Nabinger Sanchez References: <20070112163057.2a3ec8f0.rnsanchez@wait4.org> In-Reply-To: <20070112163057.2a3ec8f0.rnsanchez@wait4.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-net@freebsd.org, hugme@hugme.org Subject: Re: Problem with port 0 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jan 2007 22:13:16 -0000 Ricardo Nabinger Sanchez wrote: > On Fri, 12 Jan 2007 12:03:17 -0500 > "Hug Me" wrote: > > >> We believe FreeBSD is not allowing a UDP source port of 0 and the kernel is >> dropping the packet before it ever reaches the tftp server but are unable to >> verify this hypothesis. I was hoping someone here could help shed some light >> on the problem. >> > > But port 0 has special meaning to the kernel (ie, "give me some random > port"). Also, it is a reserved one. Please check IANA: > > http://www.iana.org/assignments/port-numbers > > I'm afraid you'll have to select another port number. > Nope. A source port of 0 is perfectly legal for UDP. I did an experiment with rpcbind whereby I performed a UDP based rpcinfo query from one FreeBSD machine to another, captured the traffic, and used tcpreplay to inject it from source port 0. At first I thought the INPCB hash lookup was doing the wrong thing, then I ktrace'd rpcbind and it was apparent that it was in fact being delivered to rpcbind from udp_input(). rpcbind tries to reply to destination port 0. This was verified with kdump and rpcbind -d. This quite rightly fails, and, indeed, we reject this from the socket code. So, FreeBSD appears to handle a UDP source port of 0 ok based on these tests. The most likely explanation for the failure in this case, without looking further, is that inetd or the tftpd implementations can't handle source port 0. BMS