summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
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>
2024-02-21uloop: automatically clear error informationJo-Philipp Wich
Make all functions clear the last error information on success in order to ensure that `error()` never reports stale information. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-02-21uci: automatically clear error informationJo-Philipp Wich
Make all functions clear the last error information on success in order to ensure that `error()` never reports stale information. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-02-21ubus: automatically clear error informationJo-Philipp Wich
Make all functions clear the last error information on success in order to ensure that `error()` never reports stale information. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-02-21Merge pull request #190 from jow-/uci-changes-load-packageJo-Philipp Wich
uci: refactor uci.changes() to match documentation
2024-02-21Merge pull request #189 from jow-/safe-iteratorsJo-Philipp Wich
vm: rework object iteration
2024-02-21uci: refactor uci.changes() to match documentationJo-Philipp Wich
When invoked with an explicit package name argument, retain the autoloaded configuration within the context state. Fixes: #188 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2024-02-21vm: rework object iterationJo-Philipp Wich
Ensure that deleting object keys during iteration is safe by keeping a global chain of per-object iterators which are advanced to the next key when the entry that is about to be iterated is deleted. Signed-off-by: Jo-Philipp Wich <jo@mein.io>