[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 []) 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-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 ([]) by localhost (ietfa.amsl.com []) (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 

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."

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