From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/4317 Path: news.gmane.org!not-for-mail From: Rich Felker Newsgroups: gmane.linux.lib.musl.general Subject: Re: IPv4 and IPv6 addresses in resolv.conf Date: Sat, 30 Nov 2013 13:52:39 -0500 Message-ID: <20131130185239.GV24286@brightrain.aerifal.cx> References: <20131130031744.GM24286@brightrain.aerifal.cx> <20131130035116.GO24286@brightrain.aerifal.cx> <20131130035912.GP24286@brightrain.aerifal.cx> <20131130170112.GR24286@brightrain.aerifal.cx> <20131130173026.GS24286@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1385837566 11256 80.91.229.3 (30 Nov 2013 18:52:46 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 30 Nov 2013 18:52:46 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-4321-gllmg-musl=m.gmane.org@lists.openwall.com Sat Nov 30 19:52:52 2013 Return-path: Envelope-to: gllmg-musl@plane.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1Vmpeu-0001KZ-2f for gllmg-musl@plane.gmane.org; Sat, 30 Nov 2013 19:52:52 +0100 Original-Received: (qmail 32280 invoked by uid 550); 30 Nov 2013 18:52:51 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 32272 invoked from network); 30 Nov 2013 18:52:50 -0000 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Xref: news.gmane.org gmane.linux.lib.musl.general:4317 Archived-At: On Sat, Nov 30, 2013 at 05:43:11PM +0000, Justin Cormack wrote: > On Sat, Nov 30, 2013 at 5:33 PM, Rob wrote: > > Rich Felker, Sat, 30 Nov 2013: > > > >>> > >>> It is EAFNOSUPPORT if no kernel support at all. > >>> > >>> Actually I don't think there can be any cases where sending to the > >>> v4-mapped address (ie ::ffff:1.2.3.4) can fail where an ipv4 socket > >>> will succeed because those are basically ipv4 sockets with just ipv6 > >>> notation, those addresses can't be routed by the ipv6 stack. So it > >> > >> > >> One thing I'm confused about is the addresses on the actual packets. > >> If we've already called bind for address :: and gotten assigned port > >> N, does this also reserve port N on 0.0.0.0, which will be needed when > >> sending from (and receiving back) IPv4 packets? Also, is there some > >> kernel option we might need to worry about that prevents :: from > >> receiving packets sent to IPv4 addresses, or does that only apply to > >> TCP, not UDP? > > > > > > I've been seeing this output consistently from mpd at startup: > > > > listen: bind to '0.0.0.0:6600' failed: Address already in use > > (continuing anyway, because binding to '[::]:6600' succeeded) > > > > mpd is the only program on my machine that binds to 6600 so it would > > appear that :: port bindings reserve the ipv4 port too. Could be a > > kernel configuration option though... > > > > Yes the default is that ipv6 binds to both ipv6 and ipv4. There is a > sockopt IPV6_V6ONLY or /proc/sys/net/ipv6/bindv6only which defaults to > 0. > > I guess scheme above is going to fail if /proc/sys/net/ipv6/bindv6only > is set to 1, so the sockopt will have to be set manually as well to > force binding on both. OK, I've committed an implementation based on the above discussion, and tested casually that it works with v4-only, v6-only, or a mix of addresses (including both v4-mapped v6 addresses and real v6 nameservers). I have not followed up on orc's further report to see whether this fixes the issues he was experiencing. Rich