Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
0336-Fix-type-specs-for-SCTP-get-set-opts.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0336-Fix-type-specs-for-SCTP-get-set-opts.patch of Package erlang
From a1766e25638ef2b3b3e03952f3a99fed6b9c43d2 Mon Sep 17 00:00:00 2001 From: Simon Cornish <7t9jna402@sneakemail.com> Date: Wed, 27 Apr 2022 14:16:54 -0700 Subject: [PATCH 1/2] Fix type specs for SCTP get/set opts --- lib/kernel/doc/src/gen_sctp.xml | 29 +++++++++-- lib/kernel/doc/src/inet.xml | 11 +++-- lib/kernel/src/gen_sctp.erl | 85 ++++++++++++++++++--------------- lib/kernel/src/inet.erl | 10 ++-- 4 files changed, 87 insertions(+), 48 deletions(-) diff --git a/lib/kernel/doc/src/gen_sctp.xml b/lib/kernel/doc/src/gen_sctp.xml index 0e980e9ec8..77659c7b47 100644 --- a/lib/kernel/doc/src/gen_sctp.xml +++ b/lib/kernel/doc/src/gen_sctp.xml @@ -79,14 +79,37 @@ </desc> </datatype> <datatype> - <name name="option"/> + <name name="setoption"/> + <desc> + <p>One of the + <seeerl marker="#options">SCTP Socket Options</seeerl> used to set an option.</p> + </desc> + </datatype> + <datatype> + <name name="getoption"/> + <desc> + <p>One of the + <seeerl marker="#options">SCTP Socket Options</seeerl> or name used to get an option.</p> + </desc> + </datatype> + <datatype> + <name name="optionval"/> <desc> <p>One of the <seeerl marker="#options">SCTP Socket Options</seeerl>.</p> </desc> </datatype> <datatype> - <name name="option_name"/> + <name name="elementary_option"/> + </datatype> + <datatype> + <name name="elementary_option_name"/> + </datatype> + <datatype> + <name name="record_option"/> + </datatype> + <datatype> + <name name="ro_option"/> </datatype> <datatype> <name>sctp_socket()</name> @@ -479,7 +502,7 @@ connect(Socket, Ip, Port>, ancillary data </seetype> from the socket - <seetype marker="#option">options</seetype> + <seeerl marker="#options">options</seeerl> <seeerl marker="inet#option-recvtos"><c>recvtos</c></seeerl>, <seeerl marker="inet#option-recvtclass"><c>recvtclass</c></seeerl> or diff --git a/lib/kernel/doc/src/inet.xml b/lib/kernel/doc/src/inet.xml index 8e7fe2f7bf..def35d4c97 100644 --- a/lib/kernel/doc/src/inet.xml +++ b/lib/kernel/doc/src/inet.xml @@ -209,6 +209,9 @@ fe80::204:acff:fe17:bf38 <datatype> <name name="socket_setopt"/> </datatype> + <datatype> + <name name="socket_optval"/> + </datatype> <datatype> <name name="returned_non_ip_address"/> <desc> @@ -555,11 +558,11 @@ fe80::204:acff:fe17:bf38 <fsummary>Get one or more options for a socket.</fsummary> <desc> <p>Gets one or more options for a socket. For a list of available - options, see + inet options, see <seemfa marker="#setopts/2"><c>setopts/2</c></seemfa>. - See also the description for the type - <seetype marker="gen_tcp#pktoptions_value"> - <c>gen_tcp:pktoptions_value()</c> + See also the descriptions for the protocol specific types referenced by + <seetype marker="#socket_optval"> + <c>socket_optval()</c> </seetype>.</p> <p>The number of elements in the returned <c><anno>OptionValues</anno></c> diff --git a/lib/kernel/src/gen_sctp.erl b/lib/kernel/src/gen_sctp.erl index d3582f89e6..2092f6cb24 100644 --- a/lib/kernel/src/gen_sctp.erl +++ b/lib/kernel/src/gen_sctp.erl @@ -37,7 +37,22 @@ -export([controlling_process/2]). -type assoc_id() :: term(). --type option() :: + +-type setoption() :: + elementary_option() | + record_option(). + +-type getoption() :: + elementary_option_name() | + record_option() | + ro_option(). + +-type optionval() :: + elementary_option() | + record_option() | + ro_option(). + +-type elementary_option() :: {active, true | false | once | -32768..32767} | {buffer, non_neg_integer()} | {dontroute, boolean()} | @@ -49,31 +64,20 @@ {recbuf, non_neg_integer()} | {reuseaddr, boolean()} | {ipv6_v6only, boolean()} | - {sctp_adaptation_layer, #sctp_setadaptation{}} | - {sctp_associnfo, #sctp_assocparams{}} | + {sndbuf, non_neg_integer()} | {sctp_autoclose, non_neg_integer()} | - {sctp_default_send_param, #sctp_sndrcvinfo{}} | - {sctp_delayed_ack_time, #sctp_assoc_value{}} | {sctp_disable_fragments, boolean()} | - {sctp_events, #sctp_event_subscribe{}} | - {sctp_get_peer_addr_info, #sctp_paddrinfo{}} | {sctp_i_want_mapped_v4_addr, boolean()} | - {sctp_initmsg, #sctp_initmsg{}} | {sctp_maxseg, non_neg_integer()} | {sctp_nodelay, boolean()} | - {sctp_peer_addr_params, #sctp_paddrparams{}} | - {sctp_primary_addr, #sctp_prim{}} | - {sctp_rtoinfo, #sctp_rtoinfo{}} | - {sctp_set_peer_primary_addr, #sctp_setpeerprim{}} | - {sctp_status, #sctp_status{}} | - {sndbuf, non_neg_integer()} | {tos, non_neg_integer()} | {tclass, non_neg_integer()} | {ttl, non_neg_integer()} | {recvtos, boolean()} | {recvtclass, boolean()} | {recvttl, boolean()}. --type option_name() :: + +-type elementary_option_name() :: active | buffer | dontroute | @@ -85,23 +89,11 @@ recbuf | reuseaddr | ipv6_v6only | - sctp_adaptation_layer | - sctp_associnfo | sctp_autoclose | - sctp_default_send_param | - sctp_delayed_ack_time | sctp_disable_fragments | - sctp_events | - sctp_get_peer_addr_info | sctp_i_want_mapped_v4_addr | - sctp_initmsg | sctp_maxseg | sctp_nodelay | - sctp_peer_addr_params | - sctp_primary_addr | - sctp_rtoinfo | - sctp_set_peer_primary_addr | - sctp_status | sndbuf | tos | tclass | @@ -109,9 +101,26 @@ recvtos | recvtclass | recvttl. + +-type record_option() :: + {sctp_adaptation_layer, #sctp_setadaptation{}} | + {sctp_associnfo, #sctp_assocparams{}} | + {sctp_default_send_param, #sctp_sndrcvinfo{}} | + {sctp_delayed_ack_time, #sctp_assoc_value{}} | + {sctp_events, #sctp_event_subscribe{}} | + {sctp_initmsg, #sctp_initmsg{}} | + {sctp_peer_addr_params, #sctp_paddrparams{}} | + {sctp_primary_addr, #sctp_prim{}} | + {sctp_rtoinfo, #sctp_rtoinfo{}} | + {sctp_set_peer_primary_addr, #sctp_setpeerprim{}}. + +-type ro_option() :: + {sctp_get_peer_addr_info, #sctp_paddrinfo{}} | + {sctp_status, #sctp_status{}}. + -type sctp_socket() :: port(). --export_type([assoc_id/0, option/0, option_name/0, sctp_socket/0]). +-export_type([assoc_id/0, setoption/0, getoption/0, optionval/0, sctp_socket/0]). -spec open() -> {ok, Socket} | {error, inet:posix()} when Socket :: sctp_socket(). @@ -131,7 +140,7 @@ open() -> | {type, SockType} | {netns, file:filename_all()} | {bind_to_device, binary()} - | option(), + | setoption(), IP :: inet:ip_address() | any | loopback, SockAddr :: socket:sockaddr_in() | socket:sockaddr_in6(), Port :: inet:port_number(), @@ -161,7 +170,7 @@ open(X) -> | {type, SockType} | {netns, file:filename_all()} | {bind_to_device, binary()} - | option(), + | setoption(), IP :: inet:ip_address() | any | loopback, SockAddr :: socket:sockaddr_in() | socket:sockaddr_in6(), Port :: inet:port_number(), @@ -229,7 +238,7 @@ peeloff(S, AssocId) when is_port(S), is_integer(AssocId) -> when Socket :: sctp_socket(), SockAddr :: socket:sockaddr_in() | socket:sockaddr_in6(), - Opts :: [Opt :: option()]. + Opts :: [Opt :: setoption()]. connect(S, SockAddr, Opts) -> connect(S, SockAddr, Opts, infinity). @@ -241,7 +250,7 @@ connect(S, SockAddr, Opts) -> when Socket :: sctp_socket(), SockAddr :: socket:sockaddr_in() | socket:sockaddr_in6(), - Opts :: [Opt :: option()], + Opts :: [Opt :: setoption()], Timeout :: timeout(); (Socket, Addr, Port, Opts) -> {ok, #sctp_assoc_change{state :: 'comm_up'}} | @@ -251,7 +260,7 @@ connect(S, SockAddr, Opts) -> Socket :: sctp_socket(), Addr :: inet:ip_address() | inet:hostname(), Port :: inet:port_number(), - Opts :: [Opt :: option()]. + Opts :: [Opt :: setoption()]. connect(S, SockAddr, Opts, Timeout) when is_map(SockAddr) andalso is_list(Opts) -> @@ -272,7 +281,7 @@ connect(S, Addr, Port, Opts) -> Socket :: sctp_socket(), Addr :: inet:ip_address() | inet:hostname(), Port :: inet:port_number(), - Opts :: [Opt :: option()], + Opts :: [Opt :: setoption()], Timeout :: timeout(). connect(S, Addr, Port, Opts, Timeout) -> @@ -287,7 +296,7 @@ connect(S, Addr, Port, Opts, Timeout) -> ok | {error, inet:posix()} when Socket :: sctp_socket(), SockAddr :: socket:sockaddr_in() | socket:sockaddr_in6(), - Opts :: [option()]. + Opts :: [setoption()]. connect_init(S, SockAddr, Opts) -> connect_init(S, SockAddr, Opts, infinity). @@ -296,14 +305,14 @@ connect_init(S, SockAddr, Opts) -> ok | {error, inet:posix()} when Socket :: sctp_socket(), SockAddr :: socket:sockaddr_in() | socket:sockaddr_in6(), - Opts :: [option()], + Opts :: [setoption()], Timeout :: timeout(); (Socket, Addr, Port, Opts) -> ok | {error, inet:posix()} when Socket :: sctp_socket(), Addr :: inet:ip_address() | inet:hostname(), Port :: inet:port_number(), - Opts :: [option()]. + Opts :: [setoption()]. connect_init(S, SockAddr, Opts, Timeout) when is_map(SockAddr) andalso is_list(Opts) -> @@ -321,7 +330,7 @@ connect_init(S, Addr, Port, Opts) -> Socket :: sctp_socket(), Addr :: inet:ip_address() | inet:hostname(), Port :: inet:port_number(), - Opts :: [option()], + Opts :: [setoption()], Timeout :: timeout(). connect_init(S, Addr, Port, Opts, Timeout) -> diff --git a/lib/kernel/src/inet.erl b/lib/kernel/src/inet.erl index 16bdc8e099..a315625e4c 100644 --- a/lib/kernel/src/inet.erl +++ b/lib/kernel/src/inet.erl @@ -144,10 +144,14 @@ -type inet_backend() :: {'inet_backend', 'inet' | 'socket'}. -type socket_setopt() :: - gen_sctp:option() | gen_tcp:option() | gen_udp:option(). + gen_sctp:setoption() | gen_tcp:option() | gen_udp:option(). + +-type socket_optval() :: + gen_sctp:optionval() | gen_tcp:option() | gen_udp:option() | gen_tcp:pktoptions_value(). -type socket_getopt() :: - gen_sctp:option_name() | gen_tcp:option_name() | gen_udp:option_name(). + gen_sctp:getoption() | gen_tcp:option_name() | gen_udp:option_name(). + -type ether_address() :: [0..255]. -type if_setopt() :: @@ -398,7 +402,7 @@ setopts(Socket, Opts) -> {'ok', OptionValues} | {'error', posix()} when Socket :: socket(), Options :: [socket_getopt()], - OptionValues :: [socket_setopt() | gen_tcp:pktoptions_value()]. + OptionValues :: [socket_optval()]. getopts(?module_socket(GenSocketMod, _) = Socket, Opts) when is_atom(GenSocketMod) -> -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor