1605 Commits
Author SHA1 Message Date
Julius Pfrommer 5bde0ea466 Merge origin/1.5 into master
Adapt the 1.5 fixes to master's discovery, alarms and conditions, session, and nodeset-loader architecture. Preserve master behavior and combine PubSub replay protection with authenticated key rollover. Enable allocation-failure regression coverage and retain both branches' relevant tests.
2026-10-28 17:37:05 +01:00
Julius Pfrommer 2d3186d30f fix(compiler): preserve XML values and their source namespace mappings 2026-10-28 17:04:47 +01:00
Julius Pfrommer 10a0beaea4 fix(compiler): parse namespace tables and identifiers without data loss 2026-10-28 17:04:47 +01:00
Andreas Ebner 13dd961ea1 fix(build): compile the size-optimised namespace zero configuration (#8637) 2026-10-27 10:29:40 +01:00
Niels BeierandAndreas Ebner 00b5e8cb4a fix(types): follow Part 6 when encoding DateTime and ExpandedNodeId
Co-authored-by: Andreas Ebner <andreas.ebner@o6-automation.com>
2026-10-26 12:06:23 +01:00
Julius Pfrommer e0ec7f1e4a test(history): exercise allocation failures in CI coverage builds
Enable allocator hooks in the alarms coverage configuration and cover history constructor and insertion failures. Include stdlib.h explicitly in tests that use EXIT_SUCCESS and EXIT_FAILURE so the allocator-enabled build compiles without transitive standard-library includes.
2026-10-21 23:07:14 +02:00
Julius Pfrommer b88c8f02d2 refactor(build): Move local mdnsd patching into tools/cmake/mdnsd.cmake 2026-10-21 11:30:41 +02:00
Julius Pfrommer 927cf371b7 refactor(server): Remove UA_ENABLE_METHODCALLS option and always build for methods 2026-10-21 11:30:41 +02:00
Julius Pfrommer b4cf2d6554 refactor(server): Remove UA_ENABLE_DA option and always provide percent deadband filtering 2026-10-21 11:30:41 +02:00
Julius Pfrommer 42a8a55d45 refactor(core): Remove UA_ENABLE_DISCOVERY build option; Enabled via configuration flags 2026-10-21 11:30:41 +02:00
Daniel Opitz a06d27fe69 fix(pubsub): declare the reader removal argument as NodeId 2026-10-19 08:30:44 +02:00
Julius Pfrommer ff2df28848 ci: fix PR security build and SKS test failures 2026-10-18 10:03:15 +02:00
Andreas Ebner 492c7de8fd fix(docker): stop the CTT server with SIGINT for a graceful shutdown
ci_server runs as PID 1 and only handles SIGINT. docker stop sent SIGTERM,
which PID 1 ignores without a handler, so the container was killed without
the shutdown delay.
2026-10-16 23:04:34 +02:00
Julius Pfrommer 513ca790ae test(arch): cover lwIP interface lifetimes and add sanitizer CI 2026-10-12 17:08:39 +02:00
Andreas EbnerandJulius Pfrommer 5514c756e6 feat(driver): add per-backend Part 20 file transfer drivers
Expose one file or directory backend through FileType and FileDirectoryType
Objects. Bind Objects to the driver lifetime, preserve reused application
nodes, and close session handles on stop or session cleanup.

Enforce file and directory access rights in Properties and Methods. Index
entries and handles with zip trees, reconcile storage changes, and retain
removed entries while their handles remain open. Include the reduced
namespace model and compile the driver with Method-call support in every
Namespace Zero configuration. Export the API unconditionally.

Co-authored-by: Julius Pfrommer <julius.pfrommer@o6-automation.com>
2026-10-12 00:14:33 +02:00
Andreas Ebner 918f2cfd4b fix(docs): typos in comments, docs and messages
Fix misspellings found with codespell across headers, sources, examples,
tests and the documentation, including "propably" in the nodeset
compiler docs. Identifiers, companion spec names and generated code are
left untouched.
2026-09-28 16:20:44 +02:00
Andreas Ebner c3bb70e66b ci: build and test without multithreading
UA_MULTITHREADING=0 is supported and the default on targets that are neither UNIX nor WIN32,
but no job built it. Mirrors unit_tests_mt with a different value, on ubuntu-24.04 only to
keep the CI cost low.
2026-09-25 12:40:49 +02:00
Andreas Ebner 623cddb2ba ci: test PubSub security and SKS with OpenSSL
The PubSub encryption and SKS jobs take the backend as argument and run
with OpenSSL as well. The release amalgamation build drops the removed
UA_ENABLE_PUBSUB_ENCRYPTION flag.
2026-09-24 16:52:03 +02:00
Julius Pfrommer dd1ee3527c ci(tests): pass sanitizer options explicitly to the privileged runner
Run CTest with the network privileges required by the Ethernet suites rather
than attaching file capabilities to every sanitizer executable. Pass
TSAN_OPTIONS after sudo and preserve the configured Ethernet interface.

Retain race detection and the existing exception for the recursive-lock
ordering heuristic.
2026-09-21 16:23:09 +02:00
Julius Pfrommer 720f603523 ci(tests): run the full unit test suite with ThreadSanitizer
Enable multithreading and the normal unit-test feature set. Build all targets and run unfiltered
CTest sequentially, failing on race reports. Keep the existing lock-order heuristic exception for
recursive locks under the common EventLoop lock.
2026-09-21 16:23:09 +02:00
Andreas Ebner eaacf79543 fix(tools): derive the amalgamation copyright year at generation time
Compute the end year of the copyright range when the amalgamation is
generated instead of hardcoding it, so it cannot go stale again. Honor
SOURCE_DATE_EPOCH so that reproducible builds still get a stable header.
2026-09-20 12:03:33 +02:00
Andreas Ebner 3f4d5245ce fix(tools): correct the amalgamation copyright header
The header credited "the contributors as stated in the AUTHORS file", but
no AUTHORS file exists anywhere in the tree, and the year range stopped at
2021. Name the contributors directly and point at the per-file copyright
headers, which the amalgamation already reproduces in full.
2026-09-20 12:03:33 +02:00
Andreas Ebner c39a4c589e feat(server): Add const option for generated UA_DataType (#7950)
* feat(core): make UA_DataTypeArray.types and UA_DataType.members const

Keep generated definitions read-only and populate dynamically allocated definitions through mutable pointers. Preserve self references when copying and registering runtime types.

* feat(nc): generate const DataType arrays for pinned namespace indices

NAMESPACE_MAP bakes in the indices; incomplete or invalid maps are rejected.

* test(nc): cover const DataType arrays and the namespace-order check

Pins DI at index 2 and asserts both outcomes of the generated runtime check.

* test(nodeset-loader): verify compatibility with const datatype arrays

Compare binary and XML encoding IDs with generated DI types. Verify that the in-tree loader reuses registered const types while adding runtime recursive types, including server cleanup.

* fix(nc): validate pinned namespaces independently of array names

Emit URI/index metadata for const type arrays and verify every contributing namespace before registering arrays or nodes. Support arrays spanning multiple namespaces and explicit TYPES_ARRAY names.

Keep datatype indices consecutive across namespaces and reject pins outside the UInt16 range. Add compiled regressions for matching, swapped, and individually shifted namespaces with conventional and independent nodeset names.

* fix(nc): reject conflicting pins for the same namespace
2026-09-10 20:15:26 +02:00
Andreas Ebner da6a019bd9 build(ci): compile the build options that no other job covers
Options that are off by default, and default-on features switched off.
2026-09-09 00:04:33 +02:00
Julius Pfrommer e6532e9ecd fix(ci): pin .NET reference server 2026-09-06 08:20:31 +02:00
Julius Pfrommer d3e968d143 feat(nodeset-loader): move loader into core utility 2026-09-05 19:31:54 +02:00
Julius Pfrommer fb2f813b30 feat(server): allow unattached methods by rule 2026-09-05 19:31:54 +02:00
Julius Pfrommer a476806541 Merge remote-tracking branch 'origin/1.5' into merge_15_master
# Conflicts:
#	.github/workflows/build_linux.yml
#	CHANGES.md
#	arch/common/eventloop_mqtt.c
#	examples/encryption/server_encryption_filestore.c
#	plugins/crypto/ua_certificategroup_filestore.c
#	src/pubsub/ua_pubsub_networkmessage_json.c
#	src/server/ua_discovery.h
#	src/server/ua_discovery_mdns.c
#	src/server/ua_discovery_mdns_avahi.c
#	src/server/ua_services_attribute.c
#	src/server/ua_services_discovery.c
#	src/server/ua_services_monitoreditem.c
#	src/server/ua_services_nodemanagement.c
#	src/server/ua_subscription.c
#	src/server/ua_subscription.h
#	src/server/ua_subscription_alarms_conditions.c
#	src/server/ua_subscription_event.c
#	src/ua_types_encoding_json_105.c
#	tests/client/check_activateSessionAsync.c
#	tests/server/check_local_monitored_item.c
#	tests/server/check_services_subscriptions.c
2026-09-03 14:33:21 +02:00
Andreas Ebner 92609f802a feat(ci): split the memcheck unit tests over parallel jobs
Move the Valgrind jobs into a dedicated workflow and shard the unit
test runs round-robin over six runners via CTEST_SHARDS/CTEST_SHARD.
Share the common Linux job setup through a composite action.
2026-09-02 15:32:46 +02:00
Julius Pfrommer c167e9af55 ci: enforce CERT C checks with clang-tidy 2026-09-01 07:57:30 +02:00
Mark Giraud e14f315e42 fix(nc): Preserve digits in NodeSet symbolic names (#8333)
NodeSet BrowseNames can contain digits that are part of the type name. Removing all digits causes ThreeDFrame to lose its NodeId.
2026-08-29 18:16:24 +02:00
Etienne Rossignon 9bf30111a7 build(docker): update alpine to 3.20, enable GDS and RBAC, and add dynamic cert entrypoint
Upgrades Alpine base image, enables 'UA_ENABLE_DRIVER_GDS_RECEIVER' and 'UA_ENABLE_RBAC' in CMake, corrects Alpine library install path to '/usr/local/lib', and introduces 'entrypoint.sh' to dynamically provision SANs or load GDS-pushed certs on startup.
2026-08-29 12:45:48 +02:00
Etienne Rossignon 430ccbc7e5 feat(sec): support custom hostname and ip address arguments in create_self-signed.py
Allows overriding SAN options via '--hostname', '--ipaddress1', and '--ipaddress2' arguments to allow dynamic SAN overrides on certificate generation.
2026-08-29 12:45:48 +02:00
Julius Pfrommer 47bf459d5d Merge remote-tracking branch 'origin/1.5' into merge_15_master_2 2026-08-25 18:59:44 +02:00
Julius Pfrommer d021004212 fix(ci): update .NET reference server path 2026-08-25 03:04:25 +02:00
Julius Pfrommer c698eaf2eb refactor: add missing o6 Automation copyright headers 2026-08-17 22:17:22 +02:00
Julius Pfrommer 5226be28f5 fix(core): encode verbose JSON enum names 2026-08-17 15:19:52 +02:00
Julius Pfrommer cf63477d54 feat(core): support Compact JSON encoding 2026-08-17 15:19:52 +02:00
Julius Pfrommer f3c2842a89 feat(client): add OPC UA HTTP transports 2026-08-17 15:19:52 +02:00
Julius Pfrommer aaa338347b feat(server): wire OPC UA HTTP transport 2026-08-17 15:19:52 +02:00
Julius Pfrommer cd69204f38 fix(arch): harden libwebsockets adapter compatibility 2026-08-17 15:19:52 +02:00
Julius Pfrommer e69343765f refactor(core): Remove unused reversible option from JSON encoding 2026-08-17 15:19:52 +02:00
Julius Pfrommer bdd6ed40d4 Merge remote-tracking branch 'origin/1.5' into merge_15_master_2
# Conflicts:
#	plugins/crypto/mbedtls/certificategroup.c
#	src/pubsub/ua_pubsub_config.c
#	src/server/ua_discovery_mdns.c
#	src/server/ua_server.c
#	src/server/ua_server_internal.h
#	src/server/ua_server_ns0_gds.c
#	src/server/ua_services_nodemanagement.c
#	src/server/ua_subscription_alarms_conditions.c
#	src/ua_types_definition.c
#	tests/server/check_services_nodemanagement.c
2026-08-16 16:46:48 +02:00
Andreas Ebnerandzsteroe 7f7b05a75c feat(nc): add --export-macro option to generate_datatypes.py
Co-Authored-By: zsteroe <zsteroe@users.noreply.github.com>
2026-08-12 11:40:14 +02:00
Julius Pfrommer e5e56db5ac ci(mbedtls): use supported dependency across jobs 2026-08-12 05:44:46 +02:00
Julius Pfrommer 73acba006c feat(mbedtls): add mbedTLS 4 support 2026-08-12 05:44:46 +02:00
Andreas Ebner ce8f98b3a1 build(ci): Cover PubSub file config in the amalgamation build
No amalgamation build enabled it, so the duplicate static went unnoticed.
2026-08-10 21:39:53 +02:00
Andreas Ebneranddapaulid a5b9620d0d feat(server): add the HasArgumentDescription ReferenceTypes to the reduced NS0 (#8264)
Co-authored-by: dapaulid <668207+dapaulid@users.noreply.github.com>
2026-08-09 09:45:20 +02:00
Julius Pfrommer b9bfc6e653 feat(server): Optionally copy methods into object instances
Add an opt-in server setting that materializes Method declarations for each Object instance instead of sharing the ObjectType Method node. Per-instance Method nodes can then carry independent runtime state while the default behavior remains compatible.
2026-08-04 16:18:39 +02:00
Julius Pfrommer 7ecdeaf633 test(interop): Add experimental WebSocket coverage 2026-08-04 07:28:29 +02:00