A query regarding sctp_bindx api in SCTP
Peter Lei (peterlei)
peterlei at cisco.com
Thu Sep 6 07:32:44 PDT 2007
Randall Stewart wrote:
> 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).
I don't recall if there was something in the timeframe of 6.1
where bindx() broke or not... there were a number of bugs fixed
surrounding bindx() though for 7.0/-current for the new address
list handling and change to use the iterator work thread.
> 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.
Any queued asconf's would go out after hitting the established
state...
There was a bug in the 7.0 code where the asconf would not get
queued at all in the early front state (COOKIE-WAIT) because
the 'peer supports addip' flag had not been set yet.
> 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.
This works fine on 7.0.
If Randy can update the patch for 6.1, we might be able to better
assist.
--peter
> 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 at freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-net
>> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
>>
>
>
--
Peter Lei
IP Engineering Tech Center
Cisco Systems, Inc.
office: (773) 695-8201
mobile: (847) 830-8869
peterlei at cisco.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3241 bytes
Desc: S/MIME Cryptographic Signature
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20070906/6335602c/smime.bin
More information about the freebsd-net
mailing list