A query regarding sctp_bindx api in SCTP

sazzadur rahman rahman.sazzadur at gmail.com
Wed Sep 5 18:51:48 PDT 2007


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);

------------------------------------------


More information about the freebsd-net mailing list