From: Eric Dumazet <eric.dumazet@gmail.com>
To: David Miller <davem@davemloft.net>
Cc: brian.haley@hp.com, ole@ans.pl, netdev@vger.kernel.org
Subject: Re: [PATCH] inet: dont set inet_rcv_saddr in connect()
Date: Wed, 08 Sep 2010 07:52:51 +0200 [thread overview]
Message-ID: <1283925171.2634.838.camel@edumazet-laptop> (raw)
In-Reply-To: <20100907.223654.70187707.davem@davemloft.net>
Le mardi 07 septembre 2010 à 22:36 -0700, David Miller a écrit :
> From: Eric Dumazet <eric.dumazet@gmail.com>
> Date: Wed, 08 Sep 2010 06:57:37 +0200
>
> > Document that connect() also sets local address, and that before
> > doing a second connect() to change remote address, its mandatory to
> > first issue a connect(AF_UNSPEC) to clear local address (if not locked
> > by a prior bind() call)
>
> For connectionless sockets, the application may connect() as many
> times as it wishes to change the remote address. The local address
> remains set if it were set before such a re-associating connect().
>
> It need only issue a connect(AF_UNSPEC) to make the socket have no
> remote association, and as you state this operation will also wipe out
> any local address settings not created by a bind() call.
>
> And nicely our man pages are very clear about this :-) as is BSD and
> Steven's volume 2.
>
> This has been legal for decades, so we have to keep working this way.
Yes, its also buggy, if 2nd remote address is not reachable on same interface.
Even if we try a connect(AF_UNSPEC), the local address stay as is :
after bind(port 5555) local addr=0x0:5555
after connect(123) local addr=0x7f000001:5555 remote addr=0x7f000001:123
Could not connect, errno=22
after connect(AF_UNSPEC) local addr=0x7f000001:5555
connect: Invalid argument
I'll work on UDP fix anyway.
next prev parent reply other threads:[~2010-09-08 5:52 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-06 17:11 2.6.34: Problem with UDP traffic on lo + poll(?) Krzysztof Oledzki
2010-09-06 19:42 ` Eric Dumazet
2010-09-06 19:55 ` Krzysztof Olędzki
2010-09-06 20:29 ` Eric Dumazet
2010-09-06 20:44 ` Krzysztof Olędzki
2010-09-06 20:48 ` Krzysztof Olędzki
2010-09-07 15:37 ` Krzysztof Olędzki
2010-09-07 16:36 ` Eric Dumazet
2010-09-07 19:20 ` Krzysztof Olędzki
2010-09-07 19:26 ` Eric Dumazet
2010-09-07 19:59 ` David Miller
2010-09-07 21:35 ` [PATCH] inet: dont set inet_rcv_saddr in connect() Eric Dumazet
2010-09-07 21:52 ` Krzysztof Olędzki
2010-09-08 2:16 ` David Miller
2010-09-08 4:13 ` Eric Dumazet
2010-09-08 2:34 ` Brian Haley
2010-09-08 3:34 ` David Miller
2010-09-08 4:42 ` Eric Dumazet
2010-09-08 5:51 ` David Miller
2010-09-08 4:57 ` Eric Dumazet
2010-09-08 5:36 ` David Miller
2010-09-08 5:52 ` Eric Dumazet [this message]
2010-09-08 10:10 ` [PATCH] udp: add rehash on connect() Eric Dumazet
2010-09-08 15:06 ` Krzysztof Olędzki
2010-09-08 15:17 ` Eric Dumazet
2010-09-08 15:29 ` Krzysztof Olędzki
2010-09-08 15:08 ` [PATCH v2] " Eric Dumazet
2010-09-08 16:52 ` Krzysztof Olędzki
2010-09-09 4:39 ` David Miller
2010-09-08 14:27 ` [PATCH] inet: dont set inet_rcv_saddr in connect() Eric Dumazet
2010-09-07 21:28 ` 2.6.34: Problem with UDP traffic on lo + poll(?) Krzysztof Olędzki
2010-09-07 21:39 ` Eric Dumazet
2010-09-07 21:51 ` Krzysztof Olędzki
2010-09-08 4:12 ` Eric Dumazet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1283925171.2634.838.camel@edumazet-laptop \
--to=eric.dumazet@gmail.com \
--cc=brian.haley@hp.com \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
--cc=ole@ans.pl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox