summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2024-07-11nl80211: drop unused structure members from connection contextJo-Philipp Wich
The `nlctrl` and `nl80211` family pointers were never used, so drop them from the connection context structure. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-07-11nl80211: support conversion from/to struct array attributesJo-Philipp Wich
Some netlink attributes, e.g. `HWSIM_ATTR_TX_INFO` contain arrays of structures. In order to cover this use-case, extend the ucode <-> nla conversion routines to support `DT_NESTED` declaration in conjunction with `DF_ARRAY`. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-07-11nl80211: gracefully handle illegal netlink error codeJo-Philipp Wich
Some generic netlink commands, e.g. `HWSIM_CMD_NEW_RADIO` might reply with a bogus netlink error message containing a positive error code, leading to an infinite loop in `uc_nl_request()`. Gracefully deal with such occurrences by remapping the error code to `NLE_RANGE` with a custom message. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-07-11Merge pull request #210 from nbd168/nl80211Jo-Philipp Wich
nl80211: add wiphy multi-radio support
2024-07-09nl80211: add wiphy multi-radio supportFelix Fietkau
Support new attributes that describe multiple radios belonging to a single wiphy. Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-07-09nl80211: update nl80211.h to latest wireless-nextFelix Fietkau
Includes the new attributes for wiphy multi-radio support Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-07-07Merge pull request #208 from nbd168/nl80211Jo-Philipp Wich
2024-07-07nl80211: add support for multi-attribute arraysFelix Fietkau
For newly added attributes, the kernel prefers to no longer add a nesting container attribute. Instead, an attribute with the element type is simply added multiple times within the outer container. Add support for this array style, which will be used in the pending wiphy multi radio support. Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-07-07nl80211: move access to tb array out of uc_nl_convert_attr and belowFelix Fietkau
Only one place needs access to another attribute from the tb array (HE MCS rates). In order to make that access possible, add a flag to indicate a second attribute dependency via auxdata. Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-06-18Merge pull request #204 from f00b4r0/zlibJo-Philipp Wich
2024-06-18Merge pull request #206 from efahl/issue205Jo-Philipp Wich
2024-06-18lib: introduce zlib libraryThibaut VARÈNE
Introduce a new "zlib" library which provides simplified bindings for zlib inflate/deflate operations. Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
2024-06-18Merge pull request #207 from nbd168/fsJo-Philipp Wich
Add fs module utility functions
2024-06-17fs: add lock() file methodFelix Fietkau
Implements file based locking on a given file handle. Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-06-17fs: add truncate() file methodFelix Fietkau
Trunates the file referenced by a file handle Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-06-10core-lib: improved documentationEric Fahlgren
- document optional 'base' parameter on 'int' function - add description of 'fn' parameter call sequence to 'map' - add several usage examples to both 'int' and 'map' - reference similarity between 'map' and 'filter' use of 'fn' - fix a few typos Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
2024-05-21Merge pull request #202 from jow-/socket-improvementsJo-Philipp Wich
Socket improvements
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-14Merge pull request #201 from jow-/socket-poll-improvementsJo-Philipp Wich
socket: optimize poll() argument handling
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-14Merge pull request #200 from jow-/socket-leak-fixJo-Philipp Wich
socket: fix potential memory leak in connect()
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-08Merge pull request #199 from jow-/socket-packetJo-Philipp Wich
socket: add AF_PACKET socket type support
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-05-02Merge pull request #198 from nbd168/ubus-uloop-fixJo-Philipp Wich
ubus: fix uc_ubus_have_uloop for eloop+uloop combination
2024-05-02ubus: fix uc_ubus_have_uloop for eloop+uloop combinationFelix Fietkau
When uloop has been integrated with eloop (in hostapd/wpa_supplicant), uloop_cancelling will return false, since uloop_run is not being called. This leads to ubus.defer() calling uloop_run in a context where it can prevent the other event loop from running. Fix this by detecting event loop integration via uloop_fd_set_cb being set Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-04-25Merge pull request #197 from jow-/docs-add-uloopJo-Philipp Wich
uloop: add documentation
2024-04-25socket: make socket.send() accept non-string dataJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-04-25uloop: add documentationJo-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-24jsdoc: disable default module titlesJo-Philipp Wich
Our module documentation provides its own titles, so suppress generation of default titles. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-04-24build: fix symbol and library detectionJo-Philipp Wich
Do not unset CMAKE_REQUIRED_* variables in order to allow various feature tests to work properly with nonstandard locations. Fixes: #186 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-04-24Merge pull request #196 from jow-/lib-socketJo-Philipp Wich
lib: introduce socket library
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>
2024-04-15uci: remove incorrectly documentated reorder() parameterJo-Philipp Wich
The reorder() function takes no `name` parameter, this was a copy-paste error in the documentation. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-04-07Merge pull request #195 from nbd168/ubus-deferJo-Philipp Wich
2024-04-07ubus: add explicit support for deferring incoming requestsFelix Fietkau
This is needed when asynchronously processing requests via uloop, e.g. using uclient. Example script: let libubus = require("ubus"); let uloop = require("uloop"); uloop.init(); let ubus = libubus.connect(); ubus.publish("test", { test: { call: function(req) { req.defer(); uloop.timer(1000, () => { req.reply({ msg: "Hello, world!" }, 0); }); }, args: {} }, }); uloop.run(); uloop.done(); Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-03-13Merge pull request #191 from jow-/ubus-clear-errorsJo-Philipp Wich
ubus: automatically clear error information
2024-03-13Merge pull request #194 from jow-/in-operator-semanticsJo-Philipp Wich
vm: rework `in` operator semantics
2024-03-13vm: rework `in` operator semanticsJo-Philipp Wich
- Ensure that testing for array membership does strict equality tests - Ensure that `(NaN in [ NaN ]) == true` - Do not perform implicit value conversion when testing for object keys, to avoid nonsensical results such as `([] in { "[ ]": true }) == true` - Add test cases for the `in` operator Fixes: #193 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-02-21lib: fix documentation typo for `pop()` functionJo-Philipp Wich
The function pops the last, not the first element from the array. Signed-off-by: Jo-Philipp Wich <jo@mein.io>