A query regarding sctp_bindx api in SCTP

Randall Stewart rrs at cisco.com
Thu Sep 6 06:26:34 PDT 2007


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


-- 
Randall Stewart
NSSTG - Cisco Systems Inc.
803-345-0369 <or> 803-317-4952 (cell)


More information about the freebsd-net mailing list