Date: Thu, 06 Sep 2007 09:26:21 -0400 From: Randall Stewart <rrs@cisco.com> To: sazzadur rahman <rahman.sazzadur@gmail.com> Cc: freebsd-net@freebsd.org Subject: Re: A query regarding sctp_bindx api in SCTP Message-ID: <46DFFFFD.6000309@cisco.com> In-Reply-To: <82bdb5ec0709051817j16bfea69u74b9f4978c1f00fc@mail.gmail.com> References: <82bdb5ec0709051817j16bfea69u74b9f4978c1f00fc@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Definetly a bug... let me dig in a bit further.. it
appears that ASCONF is not happening on sub-set bound
sockets at all ;-(
I will see if I can figure out why :-D
R
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?
>
> 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 <or> 803-317-4952 (cell)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?46DFFFFD.6000309>
