From owner-freebsd-net@FreeBSD.ORG Thu Sep 6 13:40:51 2007 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9FAD616A417 for ; Thu, 6 Sep 2007 13:40:51 +0000 (UTC) (envelope-from rrs@cisco.com) Received: from sj-iport-1.cisco.com (sj-iport-1-in.cisco.com [171.71.176.70]) by mx1.freebsd.org (Postfix) with ESMTP id 797A013C4A5 for ; Thu, 6 Sep 2007 13:40:51 +0000 (UTC) (envelope-from rrs@cisco.com) Received: from sj-dkim-3.cisco.com ([171.71.179.195]) by sj-iport-1.cisco.com with ESMTP; 06 Sep 2007 06:11:52 -0700 X-IronPort-AV: i="4.20,215,1186383600"; d="scan'208"; a="16727040:sNHT27303246" Received: from sj-core-2.cisco.com (sj-core-2.cisco.com [171.71.177.254]) by sj-dkim-3.cisco.com (8.12.11/8.12.11) with ESMTP id l86DBqXl023564; Thu, 6 Sep 2007 06:11:52 -0700 Received: from xbh-sjc-231.amer.cisco.com (xbh-sjc-231.cisco.com [128.107.191.100]) by sj-core-2.cisco.com (8.12.10/8.12.6) with ESMTP id l86DBqxJ004308; Thu, 6 Sep 2007 13:11:52 GMT Received: from xfe-sjc-211.amer.cisco.com ([171.70.151.174]) by xbh-sjc-231.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Thu, 6 Sep 2007 06:11:51 -0700 Received: from [127.0.0.1] ([171.68.225.134]) by xfe-sjc-211.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Thu, 6 Sep 2007 06:11:51 -0700 Message-ID: <46DFFC8E.2030502@cisco.com> Date: Thu, 06 Sep 2007 09:11:42 -0400 From: Randall Stewart User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.13) Gecko/20070601 X-Accept-Language: en-us, en MIME-Version: 1.0 To: sazzadur rahman References: <82bdb5ec0709051817j16bfea69u74b9f4978c1f00fc@mail.gmail.com> In-Reply-To: <82bdb5ec0709051817j16bfea69u74b9f4978c1f00fc@mail.gmail.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 06 Sep 2007 13:11:51.0626 (UTC) FILETIME=[7D44CAA0:01C7F087] DKIM-Signature: v=0.5; a=rsa-sha256; q=dns/txt; l=4228; t=1189084312; x=1189948312; c=relaxed/simple; s=sjdkim3002; h=Content-Type:From:Subject:Content-Transfer-Encoding:MIME-Version; d=cisco.com; i=rrs@cisco.com; z=From:=20Randall=20Stewart=20 |Subject:=20Re=3A=20A=20query=20regarding=20sctp_bindx=20api=20in=20SCTP |Sender:=20; bh=QgcPC895GrXz6yBG/iG2h1x6XbD+a3inKDE+p+gYouI=; b=jku9L9ht32bJsKI9aiR5GWH95OSlgGVaimtNLzm5Z9XeDobxclB2CeVaXuL8ksx7WBqq3XpY /oOD9frlYlJZxOyG1SMtiR7RGOTYc7BQndL9exDUWobP5XFAwyIGmFl7; Authentication-Results: sj-dkim-3; header.From=rrs@cisco.com; dkim=pass (sig from cisco.com/sjdkim3002 verified; ); Cc: freebsd-net@freebsd.org, Peter Lei Subject: Re: A query regarding sctp_bindx api in SCTP 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: Thu, 06 Sep 2007 13:40:51 -0000 sazzadur rahman wrote: > Hello, > I am using sctp patch for freebsd6.1. For dynamic address configuration, I > am calling sctp_bindx() API after successfull bind() and connect() API's. > Although sctp_bindx() API successfully returns 0, the debug message shows: > > addr_mgmt_assoc: added to pending list... > asconf_queue_add: appended asconf ADD_IP_ADDRESS... > > And I didn't see any ASCONF chunk sent to the peer in the tcpdump. Hence, I > am confused why it should be in the pendling list instead of immediate send > to peer? Hmm.. I would like to see a packet trace of this as well.. A couple of thoughts. a) The 6.x code is a bit out of date.. I need to update and get a new patch out for you.. I know Peter did some work on the ASCONF code recently.. so there may be some fixes that have not been propagated to 6.x.. which could be a problem (added Peter for that reason even though I know he subscribes.. not sure how often he reads net). b) Whenever an address gets added like this, then the address will go into a pending point in the assoc. Since it can't be used yet i.e. the ASCONF-ACK must be returned BEFORE the address is part of the assoc. I am also not sure of the state of your association at this point. I will try testing this... since it is most likely in a front state, this may also be a problem. The ASCONF cannot be sent until after we reach ESTABLISHED... not sure we have tested this scenario. c) Normally I would think you should do all the bindx BEFORE the connect. When you do subset binding (which you are doing here since you are NOT bound-all) then what you are saying is that YOU the application wish to manage the addresses.. no automatic ASCONF will be done for you. When you do the bindx() it is supposed to kick off the ASCONF.. but again.. this may be an issue since you are in a front state... I will test this scenario with the latest 7.0 code and see if I can recreate it. R > > In draft-ietf-tsvwg-addip-sctp-22.txt: page 20, A3, I have found that "If an > ASCONF chunk is outstanding, then the ASCONF chunk should be queued for > later transmission and no further action should be taken until the previous > ASCONF is acknowledged or a timeout occurs." But as I am calling > sctp_bindx() for the first time, there should not be any previous ASCONF > existing. > > Does anyone have any idea what I am missing here? > I would appriciate any help in this regard. > > Best Regards, > Md. Sazzadur Rahman, > Graduate Student, > School of Computer Science, > University of Oklahoma, > Norman, USA > > ---------------------------code segment I have used--------------------- > //socket > s = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP); > > //bind > memset(&myAddr, 0, sizeof myAddr); > myAddr.sin_family = AF_INET; > myAddr.sin_port = htons(5060); > myAddr.sin_addr.s_addr = inet_addr("129.15.78.125"); > if (bind(s, (struct sockaddr *)&myAddr, sizeof myAddr) < 0) { > goto close; > } > //connect > memset(&farAddr, 0, sizeof farAddr); > farAddr.sin_family = AF_INET; > farAddr.sin_port = htons(6060); > farAddr.sin_addr.s_addr = inet_addr( "129.15.78.114" ); > int iRet = connect(s, (struct sockaddr *)&farAddr, sizeof farAddr); > > //sctp_bindx > struct sockaddr_in my2ndAddr; > memset(&my2ndAddr, 0, sizeof my2ndAddr); > my2ndAddr.sin_len = sizeof my2ndAddr; > my2ndAddr.sin_family = AF_INET; > my2ndAddr.sin_port = htons(5060); > my2ndAddr.sin_addr.s_addr = inet_addr("129.15.78.126"); > > iRet = sctp_bindx(s,(struct > sockaddr*)&my2ndAddr,1,SCTP_BINDX_ADD_ADDR); > > ------------------------------------------ > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" > -- Randall Stewart NSSTG - Cisco Systems Inc. 803-345-0369 803-317-4952 (cell)