Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Sep 2007 20:17:34 -0500
From:      "sazzadur rahman" <rahman.sazzadur@gmail.com>
To:        freebsd-net@freebsd.org
Subject:   A query regarding sctp_bindx api in SCTP
Message-ID:  <82bdb5ec0709051817j16bfea69u74b9f4978c1f00fc@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
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);

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?82bdb5ec0709051817j16bfea69u74b9f4978c1f00fc>