Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Clarify select info, used in various functions.
OTP-15731
|
|
Add test case for the socket option bindtodevice. Also make
correction in the nif code. Used the wrong option (broadcast).
Also added more info to doc.
Note sure if this test case actually works. Set and get "works",
but the value returned by get is always "". So either we should
extend the test to made sure the bind actually has the expected
effect or... Something for a rainy day maybe...
OTP-15904
|
|
Add test case for the socket option acceptconn. Also make
minor correction (error when trying to set this option
was incorrect). Doc was also incorrect (spelled wrong).
OTP-15904
|
|
Had forgot about the connect function. But it can now also
handle the Timeout = nowait, maybe resulting in a select.
Required some nif work also...
OTP-15731
|
|
|
|
If another process closes the socket, the caller will
receive an abort message instead (of the select message).
OTP-15731
|
|
Document the new way to make asynchronous calls to some
of the functions: accept, all recv and all send.
OTP-15731
|
|
Updated documentation with regard to Unix Domain sockets.
OTP-15822
|
|
Corrected linking references (links) to functions.
Also added links from getopt/setopt functions to
the users guide.
Also added some comments to the socket module regarding
open with (ready made) descriptor (which is not yet
supported).
OTP-14831
|
|
Add preliminary (option) table captions.
OTP-14831
|
|
Its now possible to set a rcvbuf (otp) option value
of {N :: pos_integer(), BufSz :: pos_integer()}.
This value is used for type stream and protocol tcp,
when calling the function recv with length = 0 (zero).
The second value, BufSz, is the actual size of the receive
buffer used when calling the socket recv function, and
the first value, N, is the max number of possible reads
that will be performed (at most), even if there is more
data to read. This is limit the effect of DoS attacks.
OTP-15497
|
|
Add a way to *get* the file descriptor (fd) of a socket.
Useful mostly for debugging.
OTP-15528
|
|
Internally in the socket module we accessed domain, type and
protocol for an open socket. But as it turns out, domain (family)
is not actually available as a socket option on all platforms.
FreeBSD in this case. So, since we store these values in the socket
descriptor anyway, we switch to use these values for our internal
use instead.
OTP-14831
|
|
Add support for otp level socket options rcvbuf, rcvctrlbuf and
sndctrlbuf. These options define default sizes for these
buffers.
The 'rcvbuf' is used when receiving messages when calling
the recv, recvfrom and recvmsg functions.
The 'rcvctrlbuf' is used for the control message header info
when calling the recvmsg function.
The 'sndctrlbuf' is used for the control message header info
when calling the sendmsg function.
OTP-14831
|
|
Added support for (recvmsg) control message ipv6_pktinfo, for
level = ipv6 and type = pktinfo. This is enabled by setting the
socket option: recvpktinfo for level ipv6.
Not yet tested!
OTP-14831
|
|
Added processing or more cmsg headers (for more options).
Now (also) supports: socket:timestamp.
Also various fixes and cleanups.
For some reason calling getopt(Sock, 0, {13, int}) (or similar)
fails with badarg even though the nif-function (nif_getopt) actually
returns a valid value (for instance: {ok, 0}).
OTP-14831
|
|
Added support for ip level socket option SENDSRCADDR.
This option requires sendmsg to actually use, so we
cannot test this fully at the moment.
OTP-14831
|
|
Added support for ip level socket option RECVORIGDSTADDR.
This option requires recvmsg to actually use, so we cannot
test this fully at the moment (although both set and get works).
OTP-14831
|
|
Added support for ip level socket option RETOPTS.
OTP-14831
|
|
Added support for ip level socket option TRANSPARENT.
OTP-14831
|
|
Added support for ip level socket option PKTINFO.
This option requires sendmsg and/or recvmsg to actually use,
so we cannot test this fully at the moment (although both set
and get works).
OTP-14831
|
|
Added support for ip level socket option HDRINCL.
As this option is raw only, it has not yet been tested!
OTP-14831
|
|
Added support for ip level socket option MSFILTER.
This option has not been tested *in any way*...
OTP-14831
|
|
Added support for the IPv6 socket option RECVERR.
To actually make use of this option, we need the recvmsg
function, which we don't have yet. Baby steps.
OTP-14831.
|
|
Added support for the IP socket option RECVERR.
To actually make use of this option, we need the recvmsg
function, which we don't have yet. Baby steps.
OTP-14831.
|
|
Added support for the IPv6 socket option ADDRFORM.
Only allowed for IPv6 sockets that are connected and bound to a
v4-mapped-on-v6 address.
OTP-14831.
|
|
Added support for the IPv6 socket option ROUTER_ALERT.
Only supported for raw sockets.
OTP-14831.
|
|
Added support for the IPv6 socket option UNICAST_HOPS.
OTP-14831.
|
|
Added support for the IPv6 socket option(s) FLOWINFO.
The option returns with einval when calling setsockopt,
so either you need to be a privileged user to update, or its not
actually possible to update this option (even though it says
nothing about that in the man page. It only talks about set).
This is the same behaviour as with DSTOPTS.
Needs furher checking.
OTP-14831.
|
|
Added support for the IPv6 socket option(s) DSTOPTS.
The option returns with einval when calling setsockopt,
so either you need to be a privileged user to update, or its not
actually possible to update this option (even though it says
nothing about that in the man page. It only talks about set).
This is the same behaviour as with RTHDR and HOPLIMIT.
On FreeBSD, it says that HOPOPTS requires superuser privileges.
Needs furher checking.
OTP-14831.
|
|
Added support for the IPv6 socket option(s) AUTHHDR and HOPOPTS.
Its possible that the option is AUTHHDR is obsolete. It says so in
the include files and when trying to get it (getsockopt) it returns
with enoprotoopt.
The option HOPOPTS returns with einval when calling setsockopt,
so either you need to be a privileged user to update, or its not
actually possible to update this option (even though it says
nothing about that in the man page. It only talks about set).
This is the same behaviour as with RTHDR and HOPLIMIT.
On FreeBSD, it says that HOPOPTS requires superuser privileges.
Needs furher checking.
OTP-14831.
|
|
Added support for the IPv6 socket option RTHDR.
On FreeBSD this option requires superuser privileges to update.
There is no mention of this on linux, but its still not possible
to update (einval), so I assume that its the same there.
OTP-14831.
|
|
Added support for the IPv6 socket option RECVPKTINFO.
This option is called PKTINFO on FreeBSD, so that value
will also be accepted.
OTP-14831.
|
|
Added support for the IPv6 socket option MULTICAST_LOOP.
OTP-14831.
|
|
Added support for the IPv6 socket option MULTICAST_IF.
OTP-14831.
|
|
Added support for the IPv6 socket option MULTICAST_HOPS.
OTP-14831.
|
|
Added support for ip level socket option RECVOPTS.
OTP-14831
|
|
Added support for ip level socket option FREEBIND.
Note that there is an option available on FreeBSD called
IP_BINDANY, which seems to have similar properties (FREEBIND
is *not* available on FreeBSD). There are some restrictions
for this option though (which is not mentioned in the Linux
man page).
OTP-14831
|
|
Added support for socket level socket option TIMESTAMP.
OTP-14831
|
|
Added support for socket level socket option RCVLOWAT and SNDLOWAT.
These are both a little strange, at least on Linux. See the man
pages for more info. For instance, sndlowat cannot be set on Linux.
OTP-14831
|
|
Added support for socket level socket option RCVTIMEO and SNDTIMEO.
These are both a little strange, at least on linux. See the man
pages for more info.
OTP-14831
|
|
Added support for the SCTP option INITMSG.
OTP-14831
|
|
Added support for the SCTP option MAXSEG.
OTP-14831
|
|
Added support for the SCTP option RTOINFO.
We have the same questions for this option as for ASSOCINFO.
Maybe the assoc field shall be made 'out' only (that is, it will
be ignored for setopt). The assoc id used will be that which
is stored in the descriptor (how do we get it to begin with?).
Questions, questions...
OTP-14831
|
|
Added support for the SCTP option ASSOCINFO.
This option is a bit tricky. As the underlying structure (sctp_assocparams)
contains the assoc_id, it begs the question what happens if this option
is fetched for:
* The own assoc (which means that we might have the assoc id in the
descriptor and can initiate that part of the struct accordningly).
* Another assoc: From assoc A asks for info with assoc_id set to
that of assoc B.
* The "owning" endpoint.
* Another endpoint (an endpoint to which the assoc does not belong).
So, if the user calls socket:[getopt|setopt] for an association socket,
shall we require that the assoc_id field is set to -1? Or not set at all
and therefor filled in automatically by the nif-code?
And, if the user calls socket:[getopt|setopt] for an endpoint socket,
shall we require that the assoc_id field is set to a valid id? Or shall
it not be allowed?
Questions, questions...
OTP-14831
|
|
Added support for the SCTP option DISABLE_FRAGMENTS.
OTP-14831
|
|
Added support for the SCTP option EVENTS.
OTP-14831
|