diff --git a/TODO-RELEASE b/TODO-RELEASE index a4b381f..830e77b 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -7,5 +7,5 @@ # If any interfaces have been added since the last public release: c:r:a + 1. # If any interfaces have been removed or changed since the last public release: c:r:0. #library what description / commit summary line -libosmocore >1.8.0 osmo_iofd +libosmocore >1.8.0 osmo_iofd, osmo_sock_init2_multiaddr2() stream NEW API osmo_stream_srv_link_set_name(), osmo_stream_srv_set_name(), osmo_stream_cli_set_name() \ No newline at end of file diff --git a/src/stream_cli.c b/src/stream_cli.c index b5ef66c..8f18bfb 100644 --- a/src/stream_cli.c +++ b/src/stream_cli.c @@ -733,6 +733,9 @@ void osmo_stream_cli_destroy(struct osmo_stream_cli *cli) */ int osmo_stream_cli_open2(struct osmo_stream_cli *cli, int reconnect) { +#ifdef HAVE_LIBSCTP + struct osmo_sock_init2_multiaddr_pars ma_pars; +#endif int ret; /* we are reconfiguring this socket, close existing first. */ @@ -744,10 +747,18 @@ int osmo_stream_cli_open2(struct osmo_stream_cli *cli, int reconnect) switch (cli->proto) { #ifdef HAVE_LIBSCTP case IPPROTO_SCTP: - ret = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, cli->proto, + ma_pars = (struct osmo_sock_init2_multiaddr_pars){ + .sctp = { + .version = 0, + .sockopt_auth_supported = {.set = true, .abort_on_failure = false, .value = 1 }, + .sockopt_asconf_supported = {.set = true, .abort_on_failure = false, .value = 1 }, + } + }; + ret = osmo_sock_init2_multiaddr2(AF_UNSPEC, SOCK_STREAM, cli->proto, (const char **)cli->local_addr, cli->local_addrcnt, cli->local_port, (const char **)cli->addr, cli->addrcnt, cli->port, - OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_BIND|OSMO_SOCK_F_NONBLOCK|OSMO_SOCK_F_SCTP_ASCONF_SUPPORTED); + OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_BIND|OSMO_SOCK_F_NONBLOCK, + &ma_pars); break; #endif default: @@ -805,6 +816,9 @@ void osmo_stream_cli_set_nodelay(struct osmo_stream_cli *cli, bool nodelay) * \return negative on error, 0 on success */ int osmo_stream_cli_open(struct osmo_stream_cli *cli) { +#ifdef HAVE_LIBSCTP + struct osmo_sock_init2_multiaddr_pars ma_pars; +#endif int ret, fd = -1; /* we are reconfiguring this socket, close existing first. */ @@ -823,10 +837,18 @@ int osmo_stream_cli_open(struct osmo_stream_cli *cli) switch (cli->proto) { #ifdef HAVE_LIBSCTP case IPPROTO_SCTP: - ret = osmo_sock_init2_multiaddr(cli->sk_domain, cli->sk_type, cli->proto, + ma_pars = (struct osmo_sock_init2_multiaddr_pars){ + .sctp = { + .version = 0, + .sockopt_auth_supported = {.set = true, .abort_on_failure = false, .value = 1 }, + .sockopt_asconf_supported = {.set = true, .abort_on_failure = false, .value = 1 }, + } + }; + ret = osmo_sock_init2_multiaddr2(cli->sk_domain, cli->sk_type, cli->proto, (const char **)cli->local_addr, cli->local_addrcnt, cli->local_port, (const char **)cli->addr, cli->addrcnt, cli->port, - OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_BIND|OSMO_SOCK_F_NONBLOCK|OSMO_SOCK_F_SCTP_ASCONF_SUPPORTED); + OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_BIND|OSMO_SOCK_F_NONBLOCK, + &ma_pars); break; #endif default: diff --git a/src/stream_srv.c b/src/stream_srv.c index f46175b..9818864 100644 --- a/src/stream_srv.c +++ b/src/stream_srv.c @@ -387,6 +387,9 @@ void osmo_stream_srv_link_destroy(struct osmo_stream_srv_link *link) * \return negative on error, 0 on success */ int osmo_stream_srv_link_open(struct osmo_stream_srv_link *link) { +#ifdef HAVE_LIBSCTP + struct osmo_sock_init2_multiaddr_pars ma_pars; +#endif int ret; if (link->ofd.fd >= 0) { @@ -409,9 +412,16 @@ int osmo_stream_srv_link_open(struct osmo_stream_srv_link *link) switch (link->proto) { #ifdef HAVE_LIBSCTP case IPPROTO_SCTP: - ret = osmo_sock_init2_multiaddr(link->sk_domain, link->sk_type, link->proto, - (const char **)link->addr, link->addrcnt, link->port, - NULL, 0, 0, OSMO_SOCK_F_BIND|OSMO_SOCK_F_SCTP_ASCONF_SUPPORTED); + ma_pars = (struct osmo_sock_init2_multiaddr_pars){ + .sctp = { + .version = 0, + .sockopt_auth_supported = {.set = true, .abort_on_failure = false, .value = 1 }, + .sockopt_asconf_supported = {.set = true, .abort_on_failure = false, .value = 1 }, + } + }; + ret = osmo_sock_init2_multiaddr2(link->sk_domain, link->sk_type, link->proto, + (const char **)link->addr, link->addrcnt, link->port, + NULL, 0, 0, OSMO_SOCK_F_BIND, &ma_pars); break; #endif default: