SCTP sendmsgx
Doug Hardie
bc979 at lafn.org
Mon Mar 9 10:57:44 UTC 2020
>
>> On 9. Mar 2020, at 11:01, Doug Hardie <bc979 at lafn.org> wrote:
>>
>>> I am trying to get sctp_sendmsgx to work and not having a lot of success. I have not been able to find any examples on the web of using it. I have a client using sctp_sendmsg working fine. I need to make use of the multihoming feature which requires sctp_sendmsgx. I changed the call to sctp_sendmsgx, and changed the address count to 2. However, all I get is an EINVAL response. Looking through the code there are at least 2 different possible causes, but I can't distinguish between them. I do have two address structures in the address field. Are there any examples of how to build a client with sctp_sendmsgx?
>>
>> I am now making some progress. If you are using the sctp_sendmsg function the sa_len or sin_len field is not used. However, sctp_sendx does use it. Leaving it at zero causes
> Yepp, filling out the sa_len field is important.
>> the problem. sendx now sends a connection init to the remote host. There is no server running there yet. It hangs for quite some time and doesn't try the multihome address. I seem to recall reading something about that so will investigate that tomorrow.
> What do you see on the wire? I would expect INIT chunks to be sent to the two addresses you provided.
If I have both network connections working, there is an INIT chunk on the primary network followed by a ABORT chunk response. Then the client sits waiting for a response which never comes. If I disconnect the primary network cable, then after about 5 seconds of starting the client, I get the INIT and ABORT chunks on the secondary network. I haven't figured out how to control the time, or how to make it switch to the secondary when the network connection is there, but the server is not responding.
>
> Please note that sctp_sendx() is deprecated (like sctp_sendmsg()). Please consider using sctp_sendv().
> See https://tools.ietf.org/html/rfc6458#section-9.12
Thats quite interesting. This must have occurred after the Steven's book came out. There is no man entry for sctp_sendv in FBSD 12.1. However, I do see it in sctp_sys_calls.c so I will have to figure it out from there. Likewise there is no indication those calls are depreciated in the man pages.
-- Doug
More information about the freebsd-net
mailing list