summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2024-01-10rtnl: store callback in listener registry only on successJo-Philipp Wich
Only store the callback reference in the registry once the listener context was successfully initialized, to avoid keeping a lingering entry when invalid parameters are passed. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-12-14nl80211: fix decoding of NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET attributeJo-Philipp Wich
- The expected length was incorrect - An incorrect MCS MAP index was accessed - The maximum MCS index number were wrong Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-12-14nl80211: fix parsing of NL80211_BAND_ATTR_VHT_MCS_SET attributeJo-Philipp Wich
The length constraint of 16 byte was incorrect, the attribute is 8 bytes long; two bytes for the RX MCS set, two bytes for the highest RX rate, two bytes for the TX MCS set and two bytes for the highest TX rate. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-12-11nl80211: fix datatype of NL80211_BAND_IFTYPE_ATTR_HE_CAP_{MAC,PHY} attrsJo-Philipp Wich
The attributes are arrays of 6 and 11 u8 values respectively. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-11-30Merge pull request #183 from nbd168/ubus-reworkJo-Philipp Wich
2023-11-30ubus: make ubus_context first in uc_ubus_connection_tFelix Fietkau
Allows other C code to gain access to the ubus context without having to know the layout of the other fields. Also reduce the amount of unnecessary pointer indirection Signed-off-by: Felix Fietkau <nbd@nbd.name>
2023-11-07Merge pull request #180 from jow-/uloop-interval-signal-supportJo-Philipp Wich
uloop: support new interval and signal APIs
2023-11-07Merge pull request #181 from jow-/syntax-as-from-not-reservedJo-Philipp Wich
syntax: don't treat `as` and `from` as reserved keywords
2023-11-06syntax: don't treat `as` and `from` as reserved keywordsJo-Philipp Wich
ECMAScript allows using `as` and `from` as identifiers so follow suit and don't treat them specially while parsing. Extend the compiler logic instead to check for TK_LABEL tokens with the expected value to properly parse import and export statements. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-11-03uloop: support new interval and signal APIsJo-Philipp Wich
Add bindings for the new uloop interval and signal handling APIs and extend the CMake logic to properly detect the presence of these facilities. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-11-02build: avoid redefining _FORTIFY_SOURCEJo-Philipp Wich
Check if `-D_FORTIFY_SOURCE` was already passed via the CFLAGS environment variable and only add the flag if not already present. Fixes: ea046bd ("build: enable source fortification by default") Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-11-01lib: enforce consistent `index()` behavior with empty needle argumentJo-Philipp Wich
On macOS, the `memmem()` function returns `NULL` instead of the expected start of the haystack string when given a zero-length needle argument. Add special case handling for a zero-length needle argument to ensure that the expected offset `0` is returned on all systems. Ref: #176 Suggested-by: Erwan MAS <erwan@mas.nom.fr> Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-11-01nl80211: fix maybe uninitialized variableJo-Philipp Wich
When compiling with optimizations, gcc reports: .../nl80211.c: In function ‘uc_nl_convert_rta_vht_mcs’: .../nl80211.c:1310:31: error: ‘max_idx’ may be used uninitialized [-Werror=maybe-uninitialized] 1310 | for (j = 0; j <= max_idx; j++) | ~~^~~~~~~~~~ Slightly refactor the code to avoid this issue. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-11-01vm: fix unused result warningJo-Philipp Wich
When building against glibc with enabled source fortification, gcc reports the following issue: .../vm.c: In function ‘uc_vm_signal_raise’: .../vm.c:3161:9: error: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Werror=unused-result] 3161 | write(vm->signal.sigpipe[1], &signum, sizeof(signum)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Since we cannot do any meaningful handling of a potential write error in the affected signal handler context, simply solve this issue by wrapping the `write()` call into an empty `if ()` statement. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-11-01build: enable source fortification by defaultJo-Philipp Wich
Also switch debug builds to -Og instead of -O0 in order to make -D_FORTIFY_SOURCE=2 effective for debug builds. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-19jsdoc: switch to own custom themeJo-Philipp Wich
Switch to a custom fork of the clean jsdoc theme to address a number of quirks and to directly incorporate CSS and markup changes. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-17jsdoc: properly handle indented documentation blocksJo-Philipp Wich
Fix the jsdoc C transpiler plugin to properly detect the start of indented multi line comment blocks. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-12lib: add/improve documentation for require(), loadfile(), loadstring()Jo-Philipp Wich
Add missing documentation for the `require()` function and factor our the description of the compile options dictionary into a separate typedef. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-11uci: fix potential memory leaks in `configs()`Jo-Philipp Wich
In case `uci.cursor.configs()` is invoked with a completely empty configuration directory, the empty configuration list is not free before returning the `UCI_ERR_NOTFOUND` status. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-11Merge pull request #175 from jow-/docs-improvementsJo-Philipp Wich
Various documentation improvements
2023-10-11ci: re-trigger workflows on pull request pushesJo-Philipp Wich
Re-trigger workflow runs for pull requests if the source branch is amended or force pushed. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-11lib: various documentation fixesJo-Philipp Wich
- Consistently use nullable instead of `type|null` expressions - Use @borrows to reduce some duplicated documentation blocks - Add typedef for timelocal()/timegm() TimeSpec value Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-11uci: add module documentationJo-Philipp Wich
Add complete JSDoc documentation coverage for the uci module. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-11docs: use CSS and local JavaScript fixups to improve formattingJo-Philipp Wich
- Reduced margins - Better visual separation of method descriptions - Improved display of argument and return value attributes - Improved display of object and array type descriptions - Shortened absolute module name paths The local JavaScript fixups are a stop-gap measure for now, in the long it likely makes more sense to fork the used JSDoc theme to apply the desired changes directly to the markup. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-10Merge pull request #174 from jow-/log-libJo-Philipp Wich
lib: introduce log library
2023-10-10lib: introduce log libraryJo-Philipp Wich
Introduce a new `log` library which provides bindings for syslog and, if available, the OpenWrt libubox ulog functions. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-10build: auto-enable module depending on present librariesJo-Philipp Wich
Decide based upon the found libraries whether to enable certain, OpenWrt specific modules by default. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-10build: convert CMakeLists.txt into lowercaseJo-Philipp Wich
Convert cmake directives into lowercase notation for better readability. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-09Merge pull request #173 from nbd168/misc-fixesJo-Philipp Wich
Misc fixes
2023-10-09ci: don't skip pull request workflows for `master` branchJo-Philipp Wich
We want pull request workflows to run, even if the source branch happens to be `master` from a forked repository. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-10-09include: fix execvpe compat function on macOSFelix Fietkau
Accept char * const *, cast internally. Fixes a compile error Signed-off-by: Felix Fietkau <nbd@nbd.name>
2023-10-09uloop: rename environ variable to avoid clashing with system macro on macOSFelix Fietkau
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2023-10-09types: ensure double serializatiion with decimal placesJo-Philipp Wich
The `%g` printf format used for serializing double values into strings will not include any decimal place if the value happens to be integral, leading to an unwanted double to integer conversion when serializing and subsequently deserializing an integral double value as JSON. Solve this issue by checking the serialized string result for a decimal point or exponential notation and appending `.0` if neither is found. Ref: #173 Suggested-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-09-25Merge pull request #171 from pktpls/rtnl-netnsidJo-Philipp Wich
rtnl: add IFLA_IF_NETNSID for operating in other namespaces
2023-09-22rtnl: update the link attr TODOsPacket Please
Signed-off-by: Packet Please <pktpls@systemli.org>
2023-09-22rtnl: add IFLA_TARGET_NETNSID for operating in other namespacesPacket Please
Signed-off-by: Packet Please <pktpls@systemli.org>
2023-09-11lib: fix documented return value for `splice()`Jo-Philipp Wich
Make the `splice()` documentation match the actual implementation. Fixes: #170 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-08-23Merge pull request #169 from jow-/docs-improvementsJo-Philipp Wich
Documentation improvements
2023-08-23docs: add struct module documentationJo-Philipp Wich
Add full documentation coverage for the struct module by utilizing large parts of the Python struct module documentation for the format string description. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-08-23docs: add missing headline to debug module documentationJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-08-22Merge pull request #168 from jow-/fix-binary-string-compareJo-Philipp Wich
types: improve comparison reliability of binary strings
2023-08-22types: improve comparison reliability of binary stringsJo-Philipp Wich
The existing `ucv_compare()` implementation utilized `strcmp()` to compare two ucode string values, which may lead to incorrect results for strings containing null bytes as the comparison prematurely aborts when encountering the first null. Rework the string comparison logic to use `memcmp()` for comparing both ucv strings with each other in order to ensure that expressions such as `"" == "\u0000"` lead to the expected `false` result. Ref: https://github.com/openwrt/luci/issues/6530 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-08-09Merge pull request #167 from jow-/debug-libraryJo-Philipp Wich
Introduce debug library
2023-08-09lib: introduce debug libraryJo-Philipp Wich
Introduce a new debug library which provides introspection facilities for debugging ucode scripts. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-08-09treewide: consolidate platform specific code in platform.cJo-Philipp Wich
Get rid of most __APPLE__ guards by introducing a central platform.c unit providing drop-in replacements for missing APIs. Also move system signal definitions into the new platform file to be able to share them with the upcoming debug library. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-08-07Merge pull request #157 from jow-/signal-handlingJo-Philipp Wich
Introduce signal handling
2023-07-27uloop: interrupt on VM signalsJo-Philipp Wich
When the VM instance loading the uloop module has signal dispatching enabled, implicitly register the signal pipe as file descriptor in the global uloop and dispatch received signals to the VM instance. This ensures that the respective managed ucode signal handlers are invoked immediately and not just after `uloop_run()` returns. Also end the uloop in case any invoked signal handler threw an exception, to match the expected behaviour with other kinds of callbacks. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-07-27lib: add `signal()` stdlib functionJo-Philipp Wich
The `signal()` standard library function provides functionality for registering signal handler callbacks, restoring default signal behaviour or ignoring specific signals. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-07-27main: enable signal dispatching in the standalone cli interpreterJo-Philipp Wich
Enable signal dispatching by default for standalone ucode programs. Also adjust the `gc()` testcase output as the default number of allocations with enabled signal dispatching changes slightly. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-07-27types: treat signal handler array as GC rootJo-Philipp Wich
In order to prevent a premature release of the managed ucode signal handler callbacks, ensure to treat the containing array as GC root to mark the function values as reachable. Signed-off-by: Jo-Philipp Wich <jo@mein.io>