summaryrefslogtreecommitdiffhomepage
path: root/lib/socket.c
AgeCommit message (Collapse)Author
2024-05-21socket: implement recvmsg(), sendmsg() and cmsg supportJo-Philipp Wich
Implement socket.recvmsg(), socket.sendmsg() and support for encoding and decoding well known control message types. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-17socket: add IPv6 socket optionsJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-17socket: handle further socket option value typesJo-Philipp Wich
- Handle varying integer sizes for socket option values - Support interfaces name and index option values Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-17socket: improve uc_socket_listen() behaviorJo-Philipp Wich
- Treat address string values containing slashes as AF_UNIX addresses - Default to SOCK_DGRAM for non AF_INET, AF_INET6 sockets - Gracefully handle EOPNOTSUPP condition after listen() call Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-17socket: improve uc_socket_connect() behaviorJo-Philipp Wich
Treat address strings containing slashes as AF_UNIX paths and do not attempt to resolve them. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-17socket: support IPv6 addresses in struct conversion routinesJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-17socket: uv_to_sockaddr(): fix length calculation for AF_UNIX addressesJo-Philipp Wich
Do not attempt to calculate a dynamic length for AF_UNIX socket addresses but return the total size of `struct sockaddr_un`, like we do it for the structures of other address families as well. Fixes incorrect domain socket path truncation. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-17socket: remove wrong documentation fragmentJo-Philipp Wich
Remove an accidentially copy-pasted jsdoc comment block. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-14socket: optimize poll() argument handlingJo-Philipp Wich
Optimize the poll() function implementation to re-use passed in socket/flag tuple arrays as-is in the return value array, which simplifies attaching state to sockets for user code through subsequent fields in the tuple array. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-13socket: fix potential memory leak in connect()Jo-Philipp Wich
If a non-string value which cannot be interpreted as socket address structure is passed to connect(), the function will leak the internal address vector when returning the error. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-09socket: fix addrinfo() with omitted service argumentJo-Philipp Wich
Actually pass NULL to getaddrinfo() when the service argument is omitted, instead of incorrectly translating it to a string containing "null". Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-08socket: remove leftover debug codeJo-Philipp Wich
Fixes: 0662de6 ("socket: add AF_PACKET socket type support") Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-05-08socket: add AF_PACKET socket type supportJo-Philipp Wich
Add the required infrastructure to support Linux AF_PACKET sockets: - Add related constants - Add struct definitions for SOL_PACKET socket options - Add AF_PACKET family support to sockaddr routines Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-04-25socket: make socket.send() accept non-string dataJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-04-24socket: rework error handlingJo-Philipp Wich
- fix `error()` function documentation - change error message format order to `msg: strerror` - change `xxx() failed` messages to just `xxx()` Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-04-24lib: introduce socket libraryJo-Philipp Wich
Introduce a new socket module which provides bindings for the BSD sockets API to ucode scripts. Example usage: import * as socket from 'socket'; let sk = socket.create(socket.AF_INET, socket.SOCK_STREAM); sk.connect("192.168.1.1", 80); sk.send("GET / HTTP/1.0\r\n\r\n"); print(sk.recv(4096)); sk.close(); Signed-off-by: Jo-Philipp Wich <jo@mein.io>