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@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-net >> To unsubscribe, send any mail to "[EMAIL PROTECTED]" >> > > -- Peter Lei IP Engineering Tech Center Cisco Systems, Inc. office: (773) 695-8201 mobile: (847) 830-8869 [EMAIL PROTECTED]
smime.p7s
Description: S/MIME Cryptographic Signature