aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-10-10[socket-nif|test] Reworked otp controlling process option test caseMicael Karlberg
2018-10-10[socket-nif|test] Reworked simple otp options test caseMicael Karlberg
2018-10-05[socket-nif|test] Two more test cases (tcp) reworkedMicael Karlberg
Two (tcp) test cases where reworked using the command evaluator. OTP-14831
2018-10-05[socket-nif|test] Two more test cases (udp) reworkedMicael Karlberg
Two test cases where reworked using the command evaluator. OTP-14831
2018-10-04[socket-nif|test] begin rework socket suiteMicael Karlberg
Begin rework socket test suite using a command evaluator. OTP-14831
2018-10-04Merge branch 'bmk/20181004/nififying_inet_freebsd_fixes/OTP-14831' into ↵Micael Karlberg
bmk/20180918/nififying_inet/OTP-14831
2018-10-04[socket-nif|test] Add controlling_process test caseMicael Karlberg
Added a test case that specifically tested setting the controlling_process. Also, ensure that invalid updates of controlling-process (not owner) actually fails. OTP-14831
2018-10-04[socket-nif] Add owner validation when setopt controlling_processMicael Karlberg
Before allowing setopt(Sock, opt, controlling_process, NewPid), verify that the caller is actually the current controlling_process. OTP-14831
2018-10-04[socket-nif|test] Updated test case for connect timeoutMicael Karlberg
The connect timeout test case uses the listen backlog argument to test connect timeout (its set to 1). The idea is that when the server backlog is full, it should not reply. The client attempting to connect will then get a timeout. But as it turns out, this behaviour is not "set in stone". On FreeBSD 11.2, the result is instead a 'econnreset'. It should also be noted that this local connections. That is, both end of the connection is on the same machine. So, test case has been updated to also accept a econnreset (even though that is not what it is testing). OTP-14831
2018-10-04[socket-nif] Fixed decode of send and recv flagsMicael Karlberg
Add explicitly handling the default case, when not flags are provided (value of zero). OTP-14831
2018-10-04[socket-nif] Socket option 'SO_DOMAIN' not avalable on all platformsMicael Karlberg
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
2018-09-28[socket-nif] Add support for socket (level otp) buffer optionsMicael Karlberg
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
2018-09-28[socket-nif|doc] Cleanup and fixed setopt docMicael Karlberg
Removed some cruft. Also tried, without success, to fix the build issue ("Error file: cannot find module exporting type"). It may be because of a spec-file issue. Finally fixed the setopt doc. It did not have a seperate clause for clause 8 (the fallback clause that takes level and key as integer).
2018-09-27[socket-nif|doc] SCTP type and sendtoMicael Karlberg
Added missing SCTP type (for assoc id) and updated sento doc (missing clauses). OTP-14831
2018-09-27[socket-nif|test] Test case groupingMicael Karlberg
The test cases has been slighly regrouped. The to-group has moved into the api-group. OTP-14831
2018-09-27[socket-nif|test] Add operation timeout test casesMicael Karlberg
Add a number of *basic* operation (connect, accept, send and recv). All of which are not yet implemented (skipped with 'not-yet-implemented'). All of these are basic and only local (both sides on the same host). OTP-14831
2018-09-27[socket-nif] Improve socket stopMicael Karlberg
Make sure the current whatever (writer, reader or writer) is not the closer pid before *attempting* to sending the abort message. And if that fails, issue a warning message (not aborting). OTP-14831
2018-09-27[socket-nif] Add proper recv timeout handlingMicael Karlberg
Added proper recv timeout handling. Made use of the enif_select(mode = cancel) feature. Each time a timeout expires, the "active" recv (the surrent reader select) has to be cancelled. Not yet tested...something for the new test suite... Also, added support for getopt(controlling_pprocess) that, for some reason, was not yet implemented. OTP-14831
2018-09-27[socket-nif|test] Add first preliminary socket test suiteMicael Karlberg
Add a proper but very basic test suite. The only (6) test cases now are very basic (open-close and send-receive). OTP-14831
2018-09-21Merge branch 'bmk/20180918/nififying_inet_freebsd/OTP-14831' into ↵Micael Karlberg
bmk/20180918/nififying_inet/OTP-14831 Also needed to "revert" two of the chnages, related to assoc id. This is in FreeBSD defined as an uint32 but on linux as a int32.
2018-09-21[socket-nif] Moved include file (FreeBSD)Micael Karlberg
2018-09-21[socket-nif] Add x86_64 FreeBSDMicael Karlberg
2018-09-21[socket-nif] More constant if-def and header include movingMicael Karlberg
2018-09-20[socket-nif] Various fixes related to FreeBSD environmentMicael Karlberg
2018-09-20[socket-nif] Add proper send timeout handlingMicael Karlberg
Added proper send timeout handling. Made use of the enif_select(mode = cancel) feature. Each time a timeout expires, the "active" send (the surrent write select) has to be cancelled. OTP-14831
2018-09-19[socket-nif] Add proper connect and accept timeout handlingMicael Karlberg
Added proper connect and accept timeout handling. Made use of the enif_select(mode = cancel) feature. Each time a timeout expires, the previous operation (connect or accept) has to be cancelled (actually its the select operation that has to be cancelled). Only partial implementation of cancel for now (connect and accept). More to follow... OTP-14831
2018-09-18[socket-nif] Post rebase updateMicael Karlberg
2018-09-18[socket-nif] Added (more) tests for [recv|send]msgMicael Karlberg
Added some more tests for sendmsg (with cmsghdr). OTP-14831
2018-09-18[socket-nif] Cleanup and guardsMicael Karlberg
Some cleanup and also added a guard to sendmsg to ensure that only ctrl (cmsg hdr) with actual content will be "sent down". OTP-14831
2018-09-18[socket-nif] Encoding of cmsg headers for sendmsgMicael Karlberg
Fixed various issues with regard to encode of CMsgHdrs during sendmsg. OTP-14831
2018-09-18[socket-nif] CMsgHdr and various doc related changesMicael Karlberg
Updated the (send) cmsghdr type and the handling of it (in the nif code). Still not tested! Removed the is_loaded nif function. Tried to get fix the doc build problem (socket.erl *i think*), which causes socket.html generation to fail with: "cannot find module exporting type" To solve this I tried to run dialyzer on preloaded, and ran into problems with enc_setopt_value. Update various specs and types to "solve" this (which did not work). Updated the nif-stub functions to make dialyzer happy.
2018-09-18[socket-nif] Add support for (recvmsg) control message ipv6_pktinfoMicael Karlberg
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
2018-09-18[socket-nif] Add more data types (with doc) and (C) debugMicael Karlberg
Add more debug printouts for the new sendmsg. Also added new (erlang) types with doc. OTP-14831
2018-09-18[socket-nif] Add preliminary support for sendmsgMicael Karlberg
Added function sendmsg/2,3,4. Actually worked on the first try. Something must be wrong... Still no supported cmsghdr's (only support headers where the data part is already a binary, which therefor does not require any processing). So if the cmsghdrs actually work is unclear. OTP-14831
2018-09-18[socket-nif] Processing of more cmsg headersMicael Karlberg
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
2018-09-18[socket-nif] Add more control message decodingMicael Karlberg
Added decoding of the "known" control message options: pktinfo, recvtos, recvttl and recvorigdstaddr). OTP-14831
2018-09-18[socket-nif] Debugged and stuffMicael Karlberg
It seems to work, with atleast some of the cmsg options. More testing needed... OTP-14831
2018-09-18[socket-nif] Add support for recvmsgMicael Karlberg
Added preliminary support for function recvmsg. At the moment this only works on *nix (Windows has another function, WSARecvMsg, which has a slightly different API). Also we have "no" cmsg decode at the moment (just level and type). OTP-14831
2018-09-18[socket-nif] Add support for socket (level ip) option sendsrcaddrMicael Karlberg
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
2018-09-18[socket-nif] Add support for socket (level ip) option recvorigdstaddrMicael Karlberg
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
2018-09-18[socket-nif] Updated socket typeMicael Karlberg
Updated the socket type. No longer store "stuff" that can be retrieved by other means (domain, type and protocol). OTP-14831
2018-09-18[socket-nif] Add support for socket (level ip) option retoptsMicael Karlberg
Added support for ip level socket option RETOPTS. OTP-14831
2018-09-18[socket-nif] Add support for socket (level ip) option transparentMicael Karlberg
Added support for ip level socket option TRANSPARENT. OTP-14831
2018-09-18[socket-nif] Add support for socket (level ip) option pktinfoMicael Karlberg
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
2018-09-18[socket-nif] Add support for socket (level ip) option hdrinclMicael Karlberg
Added support for ip level socket option HDRINCL. As this option is raw only, it has not yet been tested! OTP-14831
2018-09-18[socket-nif] Add support for socket (level ip) option msfilterMicael Karlberg
Added support for ip level socket option MSFILTER. This option has not been tested *in any way*... OTP-14831
2018-09-18[socket-nif] Add support for socket (level ipv6) option recverrMicael Karlberg
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.
2018-09-18[socket-nif] Add support for socket (level ip) option recverrMicael Karlberg
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.
2018-09-18[socket-nif] Add support for socket (level ipv6) option addrformMicael Karlberg
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.
2018-09-18[socket-nif] Add support for socket (level ipv6) option router_alertMicael Karlberg
Added support for the IPv6 socket option ROUTER_ALERT. Only supported for raw sockets. OTP-14831.