[BEHAVE] UDP socket programming

Simon Perreault <simon.perreault@viagenie.ca> Fri, 28 June 2013 12:16 UTC

Return-Path: <simon.perreault@viagenie.ca>
X-Original-To: behave@ietfa.amsl.com
Delivered-To: behave@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7CBF521F9CA9 for <behave@ietfa.amsl.com>; Fri, 28 Jun 2013 05:16:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.167
X-Spam-Level:
X-Spam-Status: No, score=-2.167 tagged_above=-999 required=5 tests=[AWL=0.433, BAYES_00=-2.599, NO_RELAYS=-0.001]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id u-BHw2cWGgQS for <behave@ietfa.amsl.com>; Fri, 28 Jun 2013 05:16:13 -0700 (PDT)
Received: from jazz.viagenie.ca (jazz.viagenie.ca [IPv6:2620:0:230:8000::2]) by ietfa.amsl.com (Postfix) with ESMTP id B7E2721F9C9B for <behave@ietf.org>; Fri, 28 Jun 2013 05:16:12 -0700 (PDT)
Received: from porto.nomis80.org (unknown [IPv6:2620:0:230:2001::1000]) by jazz.viagenie.ca (Postfix) with ESMTPSA id C89FA4040A; Fri, 28 Jun 2013 08:16:03 -0400 (EDT)
Message-ID: <51CD7E83.6070503@viagenie.ca>
Date: Fri, 28 Jun 2013 14:16:03 +0200
From: Simon Perreault <simon.perreault@viagenie.ca>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130514 Thunderbird/17.0.6
MIME-Version: 1.0
To: ivan@cacaoweb.org
References: <CB1B483277FEC94E9B58357040EE5D02325A6E93@xmb-rcd-x15.cisco.com> <2f7dce8264c8a9a72640629502a44295@cacaoweb.org> <51C1681A.5030909@viagenie.ca> <f8741fad1af1cee094de9c59408b7425@cacaoweb.org> <51C40374.8080403@viagenie.ca> <21e25b7ae1501228a67656b2fa4bc009@cacaoweb.org> <51CAA20F.4070307@viagenie.ca> <88c0ada2b8ebad078fb249ac6572fd8b@cacaoweb.org> <51CBD188.4060408@viagenie.ca> <fc3c7389e9fc7afc9201f0516de436a7@cacaoweb.org> <51CC2ED4.7090506@viagenie.ca> <8335eb535d5b47319b8c804c65490ecb@cacaoweb.org>
In-Reply-To: <8335eb535d5b47319b8c804c65490ecb@cacaoweb.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Cc: behave@ietf.org
Subject: [BEHAVE] UDP socket programming
X-BeenThere: behave@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: mailing list of BEHAVE IETF WG <behave.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/behave>, <mailto:behave-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/behave>
List-Post: <mailto:behave@ietf.org>
List-Help: <mailto:behave-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/behave>, <mailto:behave-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 28 Jun 2013 12:16:20 -0000

Le 2013-06-28 00:13, ivan c a écrit :
>> 2) It propagates ICMP errors up through the BSD API, allowing
>> straightforward error handling that is again similar to TCP and can be
>> factored out. For non-connected UDP sockets, ICMP errors are simply
>> ignored.
>
> All errors (including ICMP) are received for all UDP sockets.
> If you call select() on your sockets, the sockets with the errors will be
> select()-ed, and the subsequent recvfrom() call will return the error code.
> An ICMP message will trigger a ECONNRESET error I think.

...on Linux. Not on BSD. Don't know about Windows.

W. Richard Stevens says: "Asynchronous errors are returned to the 
process for connected UDP sockets. The corollary, as we previously 
described, is that unconnected UDP sockets do not receive asynchronous 
errors."

Also: "Linux returns most ICMP "destination unreachable" errors even for 
unconnected sockets, as long as the SO_BSDCOMPAT socket option is not 
enabled. All the ICMP "destination unreachable" errors from Figure A.15 
are returned, except codes 0, 1, 4, 5, 11, and 12."

Simon
-- 
DTN made easy, lean, and smart --> http://postellation.viagenie.ca
NAT64/DNS64 open-source        --> http://ecdysis.viagenie.ca
STUN/TURN server               --> http://numb.viagenie.ca