Update open62541 from 1.0.6 to 1.3.1. Remove all patches that have
been commited upstream. New patches prevent fatal compiler warnings. Do not install unrelated header files that are not used. Currently tests are not working reliably. The 1.3 API is incompatible to 1.0 version. Depending port misc/p5-OPCUA-Open62541 builds, but tests fail. Working around API incompatibilities, fixing bugs, and resolve tests races will be done in tree. OK sthen@
This commit is contained in:
parent
51e11d1db6
commit
3f47fb4767
@ -1,11 +1,10 @@
|
||||
COMMENT = library implementation of OPC UA
|
||||
|
||||
VERSION = 1.0.6
|
||||
REVISION = 0
|
||||
VERSION = 1.3.1
|
||||
DISTNAME = open62541-${VERSION}
|
||||
PKGNAME = open62541-${VERSION}
|
||||
|
||||
SHARED_LIBS = open62541 1.0
|
||||
SHARED_LIBS = open62541 2.0
|
||||
|
||||
CATEGORIES = misc
|
||||
|
||||
@ -21,7 +20,7 @@ WANTLIB = c m mbedcrypto mbedtls mbedx509 pthread
|
||||
MASTER_SITES = https://github.com/open62541/open62541/
|
||||
MASTER_SITES0 = https://github.com/OPCFoundation/UA-Nodeset/archive/
|
||||
DISTFILES = open62541-{archive/refs/tags/v}${VERSION}.tar.gz \
|
||||
UA-1.04.5-2020-03-06.tar.gz:0
|
||||
UA-1.04.10-2021-09-15.tar.gz:0
|
||||
|
||||
MODULES = devel/cmake
|
||||
|
||||
@ -53,8 +52,7 @@ FLAVORS = ns0_full
|
||||
FLAVOR ?=
|
||||
|
||||
.if ${FLAVOR:Mns0_full}
|
||||
CONFIGURE_ARGS += -DUA_NAMESPACE_ZERO=FULL \
|
||||
-DUA_ENABLE_MICRO_EMB_DEV_PROFILE=ON
|
||||
CONFIGURE_ARGS += -DUA_NAMESPACE_ZERO=FULL
|
||||
.else
|
||||
CONFIGURE_ARGS += -DUA_NAMESPACE_ZERO=REDUCED
|
||||
.endif
|
||||
|
@ -1,4 +1,4 @@
|
||||
SHA256 (UA-1.04.5-2020-03-06.tar.gz) = KIty/GA+zomK1fXUBLBP7+EN5Puzx1apbXzINCtRgFM=
|
||||
SHA256 (open62541-1.0.6.tar.gz) = KZlAAlwUkpUzBkq+AETVgF6lDVKzLQWtm8DmmWVpwqY=
|
||||
SIZE (UA-1.04.5-2020-03-06.tar.gz) = 4053334
|
||||
SIZE (open62541-1.0.6.tar.gz) = 2691627
|
||||
SHA256 (UA-1.04.10-2021-09-15.tar.gz) = TaoMRz1MU01hSqnlSqhrcb7CREZnO550yF5a3SYkw5M=
|
||||
SHA256 (open62541-1.3.1.tar.gz) = 9U0QMl/Qj8FQWuo32D2qCFkSomlSHm0Bi/xBp0S6V6o=
|
||||
SIZE (UA-1.04.10-2021-09-15.tar.gz) = 5720040
|
||||
SIZE (open62541-1.3.1.tar.gz) = 3886706
|
||||
|
@ -1,20 +1,9 @@
|
||||
GCC 4.2.1 doesn't understand "-Wpedantic".
|
||||
|
||||
Move examples to the right place.
|
||||
|
||||
Index: CMakeLists.txt
|
||||
--- CMakeLists.txt.orig
|
||||
+++ CMakeLists.txt
|
||||
@@ -389,7 +389,7 @@ include(CompilerFlags)
|
||||
if(NOT UA_COMPILE_AS_CXX AND (CMAKE_COMPILER_IS_GNUCC OR "x${CMAKE_C_COMPILER_ID}" STREQUAL "xClang"))
|
||||
# Compiler
|
||||
add_definitions(-std=c99 -pipe
|
||||
- -Wall -Wextra -Wpedantic
|
||||
+ -Wall -Wextra
|
||||
-Wno-static-in-inline # clang doesn't like the use of static inline methods inside static inline methods
|
||||
-Wno-overlength-strings # may happen in the nodeset compiler when complex values are directly encoded
|
||||
-Wno-unused-parameter # some methods may require unused arguments to cast to a method pointer
|
||||
@@ -1239,7 +1239,7 @@ if (UA_PACK_DEBIAN)
|
||||
@@ -1695,7 +1695,7 @@ if(UA_PACK_DEBIAN)
|
||||
"examples/nodeset"
|
||||
"examples/pubsub")
|
||||
|
||||
|
@ -1,247 +0,0 @@
|
||||
https://github.com/open62541/open62541/commit/30ac5ddd892e6ce82bef4de7890f06854aca9736
|
||||
|
||||
https://github.com/open62541/open62541/commit/1654d021012b93ff669c022499fd80c47a73e72e
|
||||
|
||||
https://github.com/open62541/open62541/commit/f9ceec7be7940495cf2ee091bed1bb5acec74551
|
||||
|
||||
Index: arch/network_tcp.c
|
||||
--- arch/network_tcp.c.orig
|
||||
+++ arch/network_tcp.c
|
||||
@@ -339,11 +339,18 @@ addServerSocket(ServerNetworkLayerTCP *layer, struct a
|
||||
|
||||
static UA_StatusCode
|
||||
ServerNetworkLayerTCP_start(UA_ServerNetworkLayer *nl, const UA_String *customHostname) {
|
||||
- UA_initialize_architecture_network();
|
||||
+ UA_initialize_architecture_network();
|
||||
|
||||
ServerNetworkLayerTCP *layer = (ServerNetworkLayerTCP *)nl->handle;
|
||||
|
||||
/* Get addrinfo of the server and create server sockets */
|
||||
+ char hostname[512];
|
||||
+ if(customHostname->length) {
|
||||
+ if(customHostname->length >= sizeof(hostname))
|
||||
+ return UA_STATUSCODE_BADOUTOFMEMORY;
|
||||
+ memcpy(hostname, customHostname->data, customHostname->length);
|
||||
+ hostname[customHostname->length] = '\0';
|
||||
+ }
|
||||
char portno[6];
|
||||
UA_snprintf(portno, 6, "%d", layer->port);
|
||||
struct addrinfo hints, *res;
|
||||
@@ -352,7 +359,8 @@ ServerNetworkLayerTCP_start(UA_ServerNetworkLayer *nl,
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
hints.ai_flags = AI_PASSIVE;
|
||||
hints.ai_protocol = IPPROTO_TCP;
|
||||
- if(UA_getaddrinfo(NULL, portno, &hints, &res) != 0)
|
||||
+ if(UA_getaddrinfo(customHostname->length ? hostname : NULL,
|
||||
+ portno, &hints, &res) != 0)
|
||||
return UA_STATUSCODE_BADINTERNALERROR;
|
||||
|
||||
/* There might be serveral addrinfos (for different network cards,
|
||||
@@ -442,7 +450,7 @@ ServerNetworkLayerTCP_listen(UA_ServerNetworkLayer *nl
|
||||
|
||||
struct sockaddr_storage remote;
|
||||
socklen_t remote_size = sizeof(remote);
|
||||
- UA_SOCKET newsockfd = UA_accept((UA_SOCKET)layer->serverSockets[i],
|
||||
+ UA_SOCKET newsockfd = UA_accept(layer->serverSockets[i],
|
||||
(struct sockaddr*)&remote, &remote_size);
|
||||
if(newsockfd == UA_INVALID_SOCKET)
|
||||
continue;
|
||||
@@ -609,7 +617,6 @@ UA_StatusCode UA_ClientConnectionTCP_poll(UA_Client *c
|
||||
(TCPClientConnection*) connection->handle;
|
||||
|
||||
UA_DateTime connStart = UA_DateTime_nowMonotonic();
|
||||
- UA_SOCKET clientsockfd = connection->sockfd;
|
||||
|
||||
UA_ClientConfig *config = UA_Client_getConfig(client);
|
||||
|
||||
@@ -631,22 +638,22 @@ UA_StatusCode UA_ClientConnectionTCP_poll(UA_Client *c
|
||||
/* Thus use a loop and retry until timeout is reached */
|
||||
|
||||
/* Get a socket */
|
||||
- if(clientsockfd <= 0) {
|
||||
- clientsockfd = UA_socket(tcpConnection->server->ai_family,
|
||||
+ if(connection->sockfd == UA_INVALID_SOCKET) {
|
||||
+ connection->sockfd = UA_socket(tcpConnection->server->ai_family,
|
||||
tcpConnection->server->ai_socktype,
|
||||
tcpConnection->server->ai_protocol);
|
||||
- connection->sockfd = (UA_Int32)clientsockfd; /* cast for win32 */
|
||||
+ if(connection->sockfd == UA_INVALID_SOCKET) {
|
||||
+ UA_LOG_WARNING(&config->logger, UA_LOGCATEGORY_NETWORK,
|
||||
+ "Could not create client socket: %s", strerror(UA_ERRNO));
|
||||
+ ClientNetworkLayerTCP_close(connection);
|
||||
+ return UA_STATUSCODE_BADDISCONNECT;
|
||||
+ }
|
||||
}
|
||||
|
||||
- if(clientsockfd == UA_INVALID_SOCKET) {
|
||||
- UA_LOG_WARNING(&config->logger, UA_LOGCATEGORY_NETWORK,
|
||||
- "Could not create client socket: %s", strerror(UA_ERRNO));
|
||||
- ClientNetworkLayerTCP_close(connection);
|
||||
- return UA_STATUSCODE_BADDISCONNECT;
|
||||
- }
|
||||
|
||||
+
|
||||
/* Non blocking connect to be able to timeout */
|
||||
- if(UA_socket_set_nonblocking(clientsockfd) != UA_STATUSCODE_GOOD) {
|
||||
+ if(UA_socket_set_nonblocking(connection->sockfd) != UA_STATUSCODE_GOOD) {
|
||||
UA_LOG_WARNING(&config->logger, UA_LOGCATEGORY_NETWORK,
|
||||
"Could not set the client socket to nonblocking");
|
||||
ClientNetworkLayerTCP_close(connection);
|
||||
@@ -654,7 +661,7 @@ UA_StatusCode UA_ClientConnectionTCP_poll(UA_Client *c
|
||||
}
|
||||
|
||||
/* Non blocking connect */
|
||||
- int error = UA_connect(clientsockfd, tcpConnection->server->ai_addr,
|
||||
+ int error = UA_connect(connection->sockfd, tcpConnection->server->ai_addr,
|
||||
tcpConnection->server->ai_addrlen);
|
||||
|
||||
if ((error == -1) && (UA_ERRNO != UA_ERR_CONNECTION_PROGRESS)) {
|
||||
@@ -686,7 +693,7 @@ UA_StatusCode UA_ClientConnectionTCP_poll(UA_Client *c
|
||||
break;
|
||||
|
||||
_os_sleep(&time,&sig);
|
||||
- error = connect(clientsockfd, tcpConnection->server->ai_addr,
|
||||
+ error = connect(connection->sockfd, tcpConnection->server->ai_addr,
|
||||
tcpConnection->server->ai_addrlen);
|
||||
if ((error == -1 && UA_ERRNO == EISCONN) || (error == 0))
|
||||
resultsize = 1;
|
||||
@@ -697,26 +704,25 @@ UA_StatusCode UA_ClientConnectionTCP_poll(UA_Client *c
|
||||
#else
|
||||
fd_set fdset;
|
||||
FD_ZERO(&fdset);
|
||||
- UA_fd_set(clientsockfd, &fdset);
|
||||
+ UA_fd_set(connection->sockfd, &fdset);
|
||||
UA_UInt32 timeout_usec = (tcpConnection->timeout - timeSinceStart)
|
||||
* 1000;
|
||||
struct timeval tmptv = { (long int) (timeout_usec / 1000000),
|
||||
(int) (timeout_usec % 1000000) };
|
||||
|
||||
- int resultsize = UA_select((UA_Int32) (clientsockfd + 1), NULL, &fdset,
|
||||
- NULL, &tmptv);
|
||||
+ int resultsize = UA_select((UA_Int32) (connection->sockfd + 1), NULL,
|
||||
+ &fdset, NULL, &tmptv);
|
||||
#endif
|
||||
if (resultsize == 1) {
|
||||
/* Windows does not have any getsockopt equivalent and it is not needed there */
|
||||
#ifdef _WIN32
|
||||
- connection->sockfd = clientsockfd;
|
||||
connection->state = UA_CONNECTION_ESTABLISHED;
|
||||
return UA_STATUSCODE_GOOD;
|
||||
#else
|
||||
OPTVAL_TYPE so_error;
|
||||
socklen_t len = sizeof so_error;
|
||||
|
||||
- int ret = UA_getsockopt(clientsockfd, SOL_SOCKET, SO_ERROR, &so_error,
|
||||
+ int ret = UA_getsockopt(connection->sockfd, SOL_SOCKET, SO_ERROR, &so_error,
|
||||
&len);
|
||||
|
||||
if (ret != 0 || so_error != 0) {
|
||||
@@ -765,6 +771,7 @@ UA_ClientConnectionTCP_init(UA_ConnectionConfig config
|
||||
|
||||
connection.state = UA_CONNECTION_OPENING;
|
||||
connection.config = config;
|
||||
+ connection.sockfd = UA_INVALID_SOCKET;
|
||||
connection.send = connection_write;
|
||||
connection.recv = connection_recv;
|
||||
connection.close = ClientNetworkLayerTCP_close;
|
||||
@@ -775,6 +782,7 @@ UA_ClientConnectionTCP_init(UA_ConnectionConfig config
|
||||
|
||||
TCPClientConnection *tcpClientConnection = (TCPClientConnection*) UA_malloc(
|
||||
sizeof(TCPClientConnection));
|
||||
+ memset(tcpClientConnection, 0, sizeof(TCPClientConnection));
|
||||
connection.handle = (void*) tcpClientConnection;
|
||||
tcpClientConnection->timeout = timeout;
|
||||
UA_String hostnameString = UA_STRING_NULL;
|
||||
@@ -826,6 +834,7 @@ UA_ClientConnectionTCP(UA_ConnectionConfig config, con
|
||||
memset(&connection, 0, sizeof(UA_Connection));
|
||||
connection.state = UA_CONNECTION_CLOSED;
|
||||
connection.config = config;
|
||||
+ connection.sockfd = UA_INVALID_SOCKET;
|
||||
connection.send = connection_write;
|
||||
connection.recv = connection_recv;
|
||||
connection.close = ClientNetworkLayerTCP_close;
|
||||
@@ -874,17 +883,16 @@ UA_ClientConnectionTCP(UA_ConnectionConfig config, con
|
||||
UA_Boolean connected = false;
|
||||
UA_DateTime dtTimeout = timeout * UA_DATETIME_MSEC;
|
||||
UA_DateTime connStart = UA_DateTime_nowMonotonic();
|
||||
- UA_SOCKET clientsockfd;
|
||||
|
||||
/* On linux connect may immediately return with ECONNREFUSED but we still
|
||||
* want to try to connect. So use a loop and retry until timeout is
|
||||
* reached. */
|
||||
do {
|
||||
/* Get a socket */
|
||||
- clientsockfd = UA_socket(server->ai_family,
|
||||
+ connection.sockfd = UA_socket(server->ai_family,
|
||||
server->ai_socktype,
|
||||
server->ai_protocol);
|
||||
- if(clientsockfd == UA_INVALID_SOCKET) {
|
||||
+ if(connection.sockfd == UA_INVALID_SOCKET) {
|
||||
UA_LOG_SOCKET_ERRNO_WRAP(UA_LOG_WARNING(logger, UA_LOGCATEGORY_NETWORK,
|
||||
"Could not create client socket: %s", errno_str));
|
||||
UA_freeaddrinfo(server);
|
||||
@@ -894,10 +902,9 @@ UA_ClientConnectionTCP(UA_ConnectionConfig config, con
|
||||
connection.state = UA_CONNECTION_OPENING;
|
||||
|
||||
/* Connect to the server */
|
||||
- connection.sockfd = clientsockfd;
|
||||
|
||||
/* Non blocking connect to be able to timeout */
|
||||
- if (UA_socket_set_nonblocking(clientsockfd) != UA_STATUSCODE_GOOD) {
|
||||
+ if (UA_socket_set_nonblocking(connection.sockfd) != UA_STATUSCODE_GOOD) {
|
||||
UA_LOG_WARNING(logger, UA_LOGCATEGORY_NETWORK,
|
||||
"Could not set the client socket to nonblocking");
|
||||
ClientNetworkLayerTCP_close(&connection);
|
||||
@@ -906,7 +913,8 @@ UA_ClientConnectionTCP(UA_ConnectionConfig config, con
|
||||
}
|
||||
|
||||
/* Non blocking connect */
|
||||
- error = UA_connect(clientsockfd, server->ai_addr, (socklen_t)server->ai_addrlen);
|
||||
+ error = UA_connect(connection.sockfd, server->ai_addr,
|
||||
+ (socklen_t) server->ai_addrlen);
|
||||
|
||||
if ((error == -1) && (UA_ERRNO != UA_ERR_CONNECTION_PROGRESS)) {
|
||||
ClientNetworkLayerTCP_close(&connection);
|
||||
@@ -940,7 +948,7 @@ UA_ClientConnectionTCP(UA_ConnectionConfig config, con
|
||||
break;
|
||||
|
||||
_os_sleep(&time,&sig);
|
||||
- error = connect(clientsockfd, server->ai_addr, server->ai_addrlen);
|
||||
+ error = connect(connection.sockfd, server->ai_addr, server->ai_addrlen);
|
||||
if ((error == -1 && UA_ERRNO == EISCONN) || (error == 0))
|
||||
resultsize = 1;
|
||||
if (error == -1 && UA_ERRNO != EALREADY && UA_ERRNO != EINPROGRESS)
|
||||
@@ -950,12 +958,13 @@ UA_ClientConnectionTCP(UA_ConnectionConfig config, con
|
||||
#else
|
||||
fd_set fdset;
|
||||
FD_ZERO(&fdset);
|
||||
- UA_fd_set(clientsockfd, &fdset);
|
||||
+ UA_fd_set(connection.sockfd, &fdset);
|
||||
UA_DateTime timeout_usec = (dtTimeout - timeSinceStart) / UA_DATETIME_USEC;
|
||||
struct timeval tmptv = {(long int) (timeout_usec / 1000000),
|
||||
(int) (timeout_usec % 1000000)};
|
||||
|
||||
- int resultsize = UA_select((UA_Int32)(clientsockfd + 1), NULL, &fdset, NULL, &tmptv);
|
||||
+ int resultsize = UA_select((UA_Int32)(connection.sockfd + 1), NULL,
|
||||
+ &fdset, NULL, &tmptv);
|
||||
#endif
|
||||
|
||||
if(resultsize == 1) {
|
||||
@@ -968,7 +977,7 @@ UA_ClientConnectionTCP(UA_ConnectionConfig config, con
|
||||
OPTVAL_TYPE so_error;
|
||||
socklen_t len = sizeof so_error;
|
||||
|
||||
- int ret = UA_getsockopt(clientsockfd, SOL_SOCKET, SO_ERROR, &so_error, &len);
|
||||
+ int ret = UA_getsockopt(connection.sockfd, SOL_SOCKET, SO_ERROR, &so_error, &len);
|
||||
|
||||
if (ret != 0 || so_error != 0) {
|
||||
/* on connection refused we should still try to connect */
|
||||
@@ -1013,7 +1022,7 @@ UA_ClientConnectionTCP(UA_ConnectionConfig config, con
|
||||
|
||||
|
||||
/* We are connected. Reset socket to blocking */
|
||||
- if(UA_socket_set_blocking(clientsockfd) != UA_STATUSCODE_GOOD) {
|
||||
+ if(UA_socket_set_blocking(connection.sockfd) != UA_STATUSCODE_GOOD) {
|
||||
UA_LOG_WARNING(logger, UA_LOGCATEGORY_NETWORK,
|
||||
"Could not set the client socket to blocking");
|
||||
ClientNetworkLayerTCP_close(&connection);
|
@ -1,15 +0,0 @@
|
||||
This was needed for OpenBSD 5.8 with gcc version 4.8.4
|
||||
https://open62541.org/doc/1.0/building.html?highlight=openbsd#building-on-openbsd
|
||||
|
||||
Index: arch/posix/CMakeLists.txt
|
||||
--- arch/posix/CMakeLists.txt.orig
|
||||
+++ arch/posix/CMakeLists.txt
|
||||
@@ -10,7 +10,7 @@ if (${_index} GREATER -1 OR "${UA_ARCHITECTURE}" STREQ
|
||||
|
||||
|
||||
if("${UA_ARCHITECTURE}" STREQUAL "posix")
|
||||
- if(NOT CYGWIN AND NOT QNXNTO AND (NOT ${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD"))
|
||||
+ if(NOT CYGWIN AND NOT QNXNTO)
|
||||
ua_architecture_add_definitions(-Wshadow -Wconversion -fvisibility=hidden -fPIC)
|
||||
endif()
|
||||
|
@ -1,18 +0,0 @@
|
||||
https://github.com/open62541/open62541/commit/7453262ccf8b26e622c4afa6ab5facfc42962663
|
||||
|
||||
Index: include/open62541/server.h
|
||||
--- include/open62541/server.h.orig
|
||||
+++ include/open62541/server.h
|
||||
@@ -713,7 +713,11 @@ typedef struct {
|
||||
const UA_NodeId *targetParentNodeId,
|
||||
const UA_NodeId *referenceTypeId,
|
||||
UA_NodeId *targetNodeId);
|
||||
- } UA_GlobalNodeLifecycle;
|
||||
+} UA_GlobalNodeLifecycle;
|
||||
+
|
||||
+void UA_EXPORT
|
||||
+UA_Server_setAdminSessionContext(UA_Server *server,
|
||||
+ void *context);
|
||||
|
||||
typedef struct {
|
||||
/* Can be NULL. May replace the nodeContext */
|
@ -1,13 +0,0 @@
|
||||
https://github.com/open62541/open62541/commit/f05bafc25d332d4571b2e42fb42221c2ec3cc98c
|
||||
|
||||
Index: plugins/ua_accesscontrol_default.c
|
||||
--- plugins/ua_accesscontrol_default.c.orig
|
||||
+++ plugins/ua_accesscontrol_default.c
|
||||
@@ -210,6 +210,7 @@ static void deleteMembers_default(UA_AccessControl *ac
|
||||
if(context->usernamePasswordLoginSize > 0)
|
||||
UA_free(context->usernamePasswordLogin);
|
||||
UA_free(ac->context);
|
||||
+ ac->context = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -1,63 +0,0 @@
|
||||
The user callback should always be called, also in case of an error.
|
||||
https://github.com/open62541/open62541/pull/3691
|
||||
Although this pull request was not merged, the new callback semantics
|
||||
has been implemented during refactoring in AttributeReadCallback().
|
||||
https://github.com/open62541/open62541/commit/9e193c3a893765db085ccc75e9d3929b6f7b8f82
|
||||
|
||||
https://github.com/open62541/open62541/commit/b172ae033adb5dd2aa6766b9cd6af8fc8c91453c
|
||||
|
||||
Index: src/client/ua_client_highlevel.c
|
||||
--- src/client/ua_client_highlevel.c.orig
|
||||
+++ src/client/ua_client_highlevel.c
|
||||
@@ -786,18 +786,21 @@ void ValueAttributeRead(UA_Client *client, void *userd
|
||||
}
|
||||
}
|
||||
|
||||
- /* Could not process, delete the callback anyway */
|
||||
- if(!done)
|
||||
+ /* Could not process, run the callback anyway */
|
||||
+ if(!done) {
|
||||
UA_LOG_INFO(&client->config.logger, UA_LOGCATEGORY_CLIENT,
|
||||
"Cannot process the response to the async read "
|
||||
"request %u", requestId);
|
||||
+ cc->callback(client, userdata, requestId, NULL);
|
||||
+ }
|
||||
|
||||
LIST_REMOVE(cc, pointers);
|
||||
UA_free(cc);
|
||||
}
|
||||
|
||||
/*Read Attributes*/
|
||||
-UA_StatusCode __UA_Client_readAttribute_async(UA_Client *client,
|
||||
+UA_StatusCode
|
||||
+__UA_Client_readAttribute_async(UA_Client *client,
|
||||
const UA_NodeId *nodeId, UA_AttributeId attributeId,
|
||||
const UA_DataType *outDataType, UA_ClientAsyncServiceCallback callback,
|
||||
void *userdata, UA_UInt32 *reqId) {
|
||||
@@ -810,20 +813,21 @@ UA_StatusCode __UA_Client_readAttribute_async(UA_Clien
|
||||
request.nodesToRead = &item;
|
||||
request.nodesToReadSize = 1;
|
||||
|
||||
- __UA_Client_AsyncService(client, &request, &UA_TYPES[UA_TYPES_READREQUEST],
|
||||
- ValueAttributeRead, &UA_TYPES[UA_TYPES_READRESPONSE],
|
||||
- userdata, reqId);
|
||||
-
|
||||
CustomCallback *cc = (CustomCallback*) UA_malloc(sizeof(CustomCallback));
|
||||
if (!cc)
|
||||
return UA_STATUSCODE_BADOUTOFMEMORY;
|
||||
cc->callback = callback;
|
||||
- cc->callbackId = *reqId;
|
||||
|
||||
cc->attributeId = attributeId;
|
||||
cc->outDataType = outDataType;
|
||||
|
||||
+ __UA_Client_AsyncService(client, &request, &UA_TYPES[UA_TYPES_READREQUEST],
|
||||
+ ValueAttributeRead, &UA_TYPES[UA_TYPES_READRESPONSE],
|
||||
+ userdata, &cc->callbackId);
|
||||
+
|
||||
LIST_INSERT_HEAD(&client->customCallbacks, cc, pointers);
|
||||
+ if (reqId != NULL)
|
||||
+ *reqId = cc->callbackId;
|
||||
|
||||
return UA_STATUSCODE_GOOD;
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
Newer versions added this check in __MonitoredItems_create_handler()
|
||||
which is called ua_MonitoredItems_create() in master. It prevents
|
||||
a use after free in the monitored items delete callback.
|
||||
https://github.com/open62541/open62541/commit/a89d04e1c7c70fbb9745d7875d8b94eb2a1aa53e
|
||||
|
||||
Index: src/client/ua_client_subscriptions.c
|
||||
--- src/client/ua_client_subscriptions.c.orig
|
||||
+++ src/client/ua_client_subscriptions.c
|
||||
@@ -252,6 +252,12 @@ __UA_Client_MonitoredItems_create(UA_Client *client,
|
||||
/* Call the service */
|
||||
__UA_Client_Service(client, request, &UA_TYPES[UA_TYPES_CREATEMONITOREDITEMSREQUEST],
|
||||
response, &UA_TYPES[UA_TYPES_CREATEMONITOREDITEMSRESPONSE]);
|
||||
+
|
||||
+ /* __UA_Client_Service might free Subscription, check if it still exists */
|
||||
+ sub = findSubscription(client, request->subscriptionId);
|
||||
+ if(!sub)
|
||||
+ goto cleanup;
|
||||
+
|
||||
if(response->responseHeader.serviceResult != UA_STATUSCODE_GOOD)
|
||||
goto cleanup;
|
||||
|
@ -1,14 +0,0 @@
|
||||
https://github.com/open62541/open62541/commit/ba14327eac5489f95864d6208bc46516650db537
|
||||
|
||||
Index: src/server/ua_services_attribute.c
|
||||
--- src/server/ua_services_attribute.c.orig
|
||||
+++ src/server/ua_services_attribute.c
|
||||
@@ -681,6 +681,8 @@ compatibleValueRankValue(UA_Int32 valueRank, const UA_
|
||||
return true;
|
||||
case UA_VALUERANK_SCALAR: /* The value is a scalar */
|
||||
return (arrayDims == 0);
|
||||
+ case UA_VALUERANK_ONE_OR_MORE_DIMENSIONS:
|
||||
+ return (arrayDims >= 1);
|
||||
default:
|
||||
break;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
https://github.com/open62541/open62541/commit/7453262ccf8b26e622c4afa6ab5facfc42962663
|
||||
|
||||
Index: src/server/ua_services_nodemanagement.c
|
||||
--- src/server/ua_services_nodemanagement.c.orig
|
||||
+++ src/server/ua_services_nodemanagement.c
|
||||
@@ -2178,6 +2178,12 @@ UA_Server_setMethodNode_callback(UA_Server *server,
|
||||
/* Lifecycle Management */
|
||||
/************************/
|
||||
|
||||
+void UA_EXPORT
|
||||
+UA_Server_setAdminSessionContext(UA_Server *server,
|
||||
+ void *context) {
|
||||
+ server->adminSession.sessionHandle = context;
|
||||
+}
|
||||
+
|
||||
static UA_StatusCode
|
||||
setNodeTypeLifecycle(UA_Server *server, UA_Session *session,
|
||||
UA_Node* node, UA_NodeTypeLifecycle *lifecycle) {
|
@ -1,14 +0,0 @@
|
||||
https://github.com/open62541/open62541/commit/a174f9b8cae64b1f38fa84fc6153d1fa8d9b05bf
|
||||
|
||||
Index: src/ua_types_encoding_binary.c
|
||||
--- src/ua_types_encoding_binary.c.orig
|
||||
+++ src/ua_types_encoding_binary.c
|
||||
@@ -732,6 +732,8 @@ DECODE_BINARY(ExpandedNodeId) {
|
||||
/* QualifiedName */
|
||||
ENCODE_BINARY(QualifiedName) {
|
||||
status ret = ENCODE_DIRECT(&src->namespaceIndex, UInt16);
|
||||
+ if(ret != UA_STATUSCODE_GOOD)
|
||||
+ return ret;
|
||||
ret |= ENCODE_DIRECT(&src->name, String);
|
||||
return ret;
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
https://github.com/open62541/open62541/commit/71738ec1ed9f1ba32bdb52650a103d72cb8f6d1d
|
||||
|
||||
Index: tests/CMakeLists.txt
|
||||
--- tests/CMakeLists.txt.orig
|
||||
+++ tests/CMakeLists.txt
|
||||
@@ -1,7 +1,7 @@
|
||||
# Load CMake Packages
|
||||
find_package(Check REQUIRED)
|
||||
set(LIBS ${CHECK_LIBRARIES} ${open62541_LIBRARIES})
|
||||
-if(NOT WIN32 AND NOT APPLE)
|
||||
+if(NOT WIN32 AND NOT APPLE AND NOT (CMAKE_HOST_SYSTEM_NAME MATCHES "OpenBSD"))
|
||||
list(APPEND LIBS subunit)
|
||||
endif()
|
||||
|
||||
@@ -11,11 +11,6 @@ if(NOT MSVC AND UA_ENABLE_UNIT_TESTS_MEMCHECK)
|
||||
find_package(Valgrind REQUIRED)
|
||||
endif()
|
||||
|
||||
-if(CMAKE_HOST_SYSTEM_NAME MATCHES "OpenBSD")
|
||||
- link_directories(/usr/local/lib)
|
||||
- add_definitions(-Wno-gnu-zero-variadic-macro-arguments)
|
||||
-endif()
|
||||
-
|
||||
if(APPLE)
|
||||
# CLang on Apple complains about many cases like this:
|
||||
# /Users/travis/build/open62541/open62541/tests/check_chunking.c:148:22: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'intmax_t' (aka 'long') [-Wsign-conversion]
|
||||
@@ -36,6 +31,12 @@ include_directories("${PROJECT_BINARY_DIR}")
|
||||
if(UA_ENABLE_ENCRYPTION)
|
||||
# mbedtls includes
|
||||
include_directories(${MBEDTLS_INCLUDE_DIRS})
|
||||
+endif()
|
||||
+
|
||||
+if(CMAKE_HOST_SYSTEM_NAME MATCHES "OpenBSD")
|
||||
+ include_directories(AFTER /usr/local/include)
|
||||
+ link_directories(AFTER /usr/local/lib)
|
||||
+ add_definitions(-Wno-gnu-zero-variadic-macro-arguments)
|
||||
endif()
|
||||
|
||||
add_definitions(-DUA_sleep_ms=UA_comboSleep)
|
15
misc/open62541/patches/patch-tests_check_securechannel_c
Normal file
15
misc/open62541/patches/patch-tests_check_securechannel_c
Normal file
@ -0,0 +1,15 @@
|
||||
Fix -Wsign-conversion compiler error.
|
||||
https://github.com/open62541/open62541/commit/4a0f9795165aa08aa4cad473bf5e066ab33d31fd
|
||||
|
||||
Index: tests/check_securechannel.c
|
||||
--- tests/check_securechannel.c.orig
|
||||
+++ tests/check_securechannel.c
|
||||
@@ -365,7 +365,7 @@ START_TEST(Securechannel_sendAsymmetricOPNMessage_extr
|
||||
if(extraPadding) {
|
||||
extraPaddingByte = paddingByte;
|
||||
paddingByte = sentData.data[sentData.length - keySizes.asym_lcl_sig_size - 2];
|
||||
- paddingSize = (extraPaddingByte << 8u) + paddingByte;
|
||||
+ paddingSize = ((size_t)extraPaddingByte << 8u) + paddingByte;
|
||||
paddingSize += 1;
|
||||
}
|
||||
|
15
misc/open62541/patches/patch-tests_check_types_builtin_c
Normal file
15
misc/open62541/patches/patch-tests_check_types_builtin_c
Normal file
@ -0,0 +1,15 @@
|
||||
Fix -Wsign-conversion compiler error.
|
||||
https://github.com/open62541/open62541/commit/4a0f9795165aa08aa4cad473bf5e066ab33d31fd
|
||||
|
||||
Index: tests/check_types_builtin.c
|
||||
--- tests/check_types_builtin.c.orig
|
||||
+++ tests/check_types_builtin.c
|
||||
@@ -195,7 +195,7 @@ END_TEST
|
||||
START_TEST(UA_Int64_decodeShallRespectSign) {
|
||||
// given
|
||||
UA_ByteString rawMessage;
|
||||
- UA_UInt64 expectedVal = ((UA_UInt64)0xFF) << 56;
|
||||
+ UA_Int64 expectedVal = ((UA_Int64)0xFF) << 56;
|
||||
UA_Byte mem[8] = { 00, 00, 00, 00, 0x00, 0x00, 0x00, 0xFF };
|
||||
rawMessage.data = mem;
|
||||
rawMessage.length = 8;
|
@ -0,0 +1,21 @@
|
||||
Fix -Wsign-conversion compiler error.
|
||||
https://github.com/open62541/open62541/commit/1d727e5b40681a1b287749e9acde5269607dc4db
|
||||
|
||||
Index: tests/client/check_client_encryption.c
|
||||
--- tests/client/check_client_encryption.c.orig
|
||||
+++ tests/client/check_client_encryption.c
|
||||
@@ -90,12 +90,12 @@ START_TEST(encryption_reconnect_session) {
|
||||
UA_ByteString certificate;
|
||||
certificate.length = CERT_DER_LENGTH;
|
||||
certificate.data = CERT_DER_DATA;
|
||||
- ck_assert_int_ne(certificate.length, 0);
|
||||
+ ck_assert_uint_ne(certificate.length, 0);
|
||||
|
||||
UA_ByteString privateKey;
|
||||
privateKey.length = KEY_DER_LENGTH;
|
||||
privateKey.data = KEY_DER_DATA;
|
||||
- ck_assert_int_ne(privateKey.length, 0);
|
||||
+ ck_assert_uint_ne(privateKey.length, 0);
|
||||
|
||||
/* Secure client initialization */
|
||||
client = UA_Client_new();
|
@ -0,0 +1,36 @@
|
||||
Fix -Wsign-conversion compiler error.
|
||||
https://github.com/open62541/open62541/commit/4a0f9795165aa08aa4cad473bf5e066ab33d31fd
|
||||
|
||||
Index: tests/encryption/check_encryption_aes128sha256rsaoaep.c
|
||||
--- tests/encryption/check_encryption_aes128sha256rsaoaep.c.orig
|
||||
+++ tests/encryption/check_encryption_aes128sha256rsaoaep.c
|
||||
@@ -107,12 +107,12 @@ START_TEST(encryption_connect) {
|
||||
UA_ByteString certificate;
|
||||
certificate.length = CERT_DER_LENGTH;
|
||||
certificate.data = CERT_DER_DATA;
|
||||
- ck_assert_int_ne(certificate.length, 0);
|
||||
+ ck_assert_uint_ne(certificate.length, 0);
|
||||
|
||||
UA_ByteString privateKey;
|
||||
privateKey.length = KEY_DER_LENGTH;
|
||||
privateKey.data = KEY_DER_DATA;
|
||||
- ck_assert_int_ne(privateKey.length, 0);
|
||||
+ ck_assert_uint_ne(privateKey.length, 0);
|
||||
|
||||
/* The Get endpoint (discovery service) is done with
|
||||
* security mode as none to see the server's capability
|
||||
@@ -188,12 +188,12 @@ START_TEST(encryption_connect_pem) {
|
||||
UA_ByteString certificate;
|
||||
certificate.length = CERT_PEM_LENGTH;
|
||||
certificate.data = CERT_PEM_DATA;
|
||||
- ck_assert_int_ne(certificate.length, 0);
|
||||
+ ck_assert_uint_ne(certificate.length, 0);
|
||||
|
||||
UA_ByteString privateKey;
|
||||
privateKey.length = KEY_PEM_LENGTH;
|
||||
privateKey.data = KEY_PEM_DATA;
|
||||
- ck_assert_int_ne(privateKey.length, 0);
|
||||
+ ck_assert_uint_ne(privateKey.length, 0);
|
||||
|
||||
/* The Get endpoint (discovery service) is done with
|
||||
* security mode as none to see the server's capability
|
@ -0,0 +1,36 @@
|
||||
Fix -Wsign-conversion compiler error.
|
||||
https://github.com/open62541/open62541/commit/4a0f9795165aa08aa4cad473bf5e066ab33d31fd
|
||||
|
||||
Index: tests/encryption/check_encryption_basic128rsa15.c
|
||||
--- tests/encryption/check_encryption_basic128rsa15.c.orig
|
||||
+++ tests/encryption/check_encryption_basic128rsa15.c
|
||||
@@ -104,12 +104,12 @@ START_TEST(encryption_connect) {
|
||||
UA_ByteString certificate;
|
||||
certificate.length = CERT_DER_LENGTH;
|
||||
certificate.data = CERT_DER_DATA;
|
||||
- ck_assert_int_ne(certificate.length, 0);
|
||||
+ ck_assert_uint_ne(certificate.length, 0);
|
||||
|
||||
UA_ByteString privateKey;
|
||||
privateKey.length = KEY_DER_LENGTH;
|
||||
privateKey.data = KEY_DER_DATA;
|
||||
- ck_assert_int_ne(privateKey.length, 0);
|
||||
+ ck_assert_uint_ne(privateKey.length, 0);
|
||||
|
||||
/* The Get endpoint (discovery service) is done with
|
||||
* security mode as none to see the server's capability
|
||||
@@ -185,12 +185,12 @@ START_TEST(encryption_connect_pem) {
|
||||
UA_ByteString certificate;
|
||||
certificate.length = CERT_PEM_LENGTH;
|
||||
certificate.data = CERT_PEM_DATA;
|
||||
- ck_assert_int_ne(certificate.length, 0);
|
||||
+ ck_assert_uint_ne(certificate.length, 0);
|
||||
|
||||
UA_ByteString privateKey;
|
||||
privateKey.length = KEY_PEM_LENGTH;
|
||||
privateKey.data = KEY_PEM_DATA;
|
||||
- ck_assert_int_ne(privateKey.length, 0);
|
||||
+ ck_assert_uint_ne(privateKey.length, 0);
|
||||
|
||||
/* The Get endpoint (discovery service) is done with
|
||||
* security mode as none to see the server's capability
|
@ -0,0 +1,36 @@
|
||||
Fix -Wsign-conversion compiler error.
|
||||
https://github.com/open62541/open62541/commit/4a0f9795165aa08aa4cad473bf5e066ab33d31fd
|
||||
|
||||
Index: tests/encryption/check_encryption_basic256.c
|
||||
--- tests/encryption/check_encryption_basic256.c.orig
|
||||
+++ tests/encryption/check_encryption_basic256.c
|
||||
@@ -107,12 +107,12 @@ START_TEST(encryption_connect) {
|
||||
UA_ByteString certificate;
|
||||
certificate.length = CERT_DER_LENGTH;
|
||||
certificate.data = CERT_DER_DATA;
|
||||
- ck_assert_int_ne(certificate.length, 0);
|
||||
+ ck_assert_uint_ne(certificate.length, 0);
|
||||
|
||||
UA_ByteString privateKey;
|
||||
privateKey.length = KEY_DER_LENGTH;
|
||||
privateKey.data = KEY_DER_DATA;
|
||||
- ck_assert_int_ne(privateKey.length, 0);
|
||||
+ ck_assert_uint_ne(privateKey.length, 0);
|
||||
|
||||
/* The Get endpoint (discovery service) is done with
|
||||
* security mode as none to see the server's capability
|
||||
@@ -188,12 +188,12 @@ START_TEST(encryption_connect_pem) {
|
||||
UA_ByteString certificate;
|
||||
certificate.length = CERT_PEM_LENGTH;
|
||||
certificate.data = CERT_PEM_DATA;
|
||||
- ck_assert_int_ne(certificate.length, 0);
|
||||
+ ck_assert_uint_ne(certificate.length, 0);
|
||||
|
||||
UA_ByteString privateKey;
|
||||
privateKey.length = KEY_PEM_LENGTH;
|
||||
privateKey.data = KEY_PEM_DATA;
|
||||
- ck_assert_int_ne(privateKey.length, 0);
|
||||
+ ck_assert_uint_ne(privateKey.length, 0);
|
||||
|
||||
/* The Get endpoint (discovery service) is done with
|
||||
* security mode as none to see the server's capability
|
@ -0,0 +1,36 @@
|
||||
Fix -Wsign-conversion compiler error.
|
||||
https://github.com/open62541/open62541/commit/4a0f9795165aa08aa4cad473bf5e066ab33d31fd
|
||||
|
||||
Index: tests/encryption/check_encryption_basic256sha256.c
|
||||
--- tests/encryption/check_encryption_basic256sha256.c.orig
|
||||
+++ tests/encryption/check_encryption_basic256sha256.c
|
||||
@@ -107,12 +107,12 @@ START_TEST(encryption_connect) {
|
||||
UA_ByteString certificate;
|
||||
certificate.length = CERT_DER_LENGTH;
|
||||
certificate.data = CERT_DER_DATA;
|
||||
- ck_assert_int_ne(certificate.length, 0);
|
||||
+ ck_assert_uint_ne(certificate.length, 0);
|
||||
|
||||
UA_ByteString privateKey;
|
||||
privateKey.length = KEY_DER_LENGTH;
|
||||
privateKey.data = KEY_DER_DATA;
|
||||
- ck_assert_int_ne(privateKey.length, 0);
|
||||
+ ck_assert_uint_ne(privateKey.length, 0);
|
||||
|
||||
/* The Get endpoint (discovery service) is done with
|
||||
* security mode as none to see the server's capability
|
||||
@@ -188,12 +188,12 @@ START_TEST(encryption_connect_pem) {
|
||||
UA_ByteString certificate;
|
||||
certificate.length = CERT_PEM_LENGTH;
|
||||
certificate.data = CERT_PEM_DATA;
|
||||
- ck_assert_int_ne(certificate.length, 0);
|
||||
+ ck_assert_uint_ne(certificate.length, 0);
|
||||
|
||||
UA_ByteString privateKey;
|
||||
privateKey.length = KEY_PEM_LENGTH;
|
||||
privateKey.data = KEY_PEM_DATA;
|
||||
- ck_assert_int_ne(privateKey.length, 0);
|
||||
+ ck_assert_uint_ne(privateKey.length, 0);
|
||||
|
||||
/* The Get endpoint (discovery service) is done with
|
||||
* security mode as none to see the server's capability
|
@ -0,0 +1,37 @@
|
||||
Fix -Wsign-conversion compiler error.
|
||||
https://github.com/open62541/open62541/commit/ec42e5c65f9211eba13a5346822ab017b617bfff
|
||||
|
||||
Index: tests/nodeset-compiler/check_nodeset_compiler_testnodeset.c
|
||||
--- tests/nodeset-compiler/check_nodeset_compiler_testnodeset.c.orig
|
||||
+++ tests/nodeset-compiler/check_nodeset_compiler_testnodeset.c
|
||||
@@ -112,26 +112,26 @@ START_TEST(readValueRank) {
|
||||
ck_assert_int_eq(rank, -2);
|
||||
UA_Variant_init(&dims);
|
||||
UA_Server_readArrayDimensions(server, UA_NODEID_NUMERIC(testNamespaceIndex, 10002), &dims);
|
||||
- ck_assert_int_eq(dims.arrayLength, 0);
|
||||
+ ck_assert_uint_eq(dims.arrayLength, 0);
|
||||
UA_Variant_clear(&dims);
|
||||
// 1-dim
|
||||
UA_Server_readValueRank(server, UA_NODEID_NUMERIC(testNamespaceIndex, 10007), &rank);
|
||||
ck_assert_int_eq(rank, 1);
|
||||
UA_Server_readArrayDimensions(server, UA_NODEID_NUMERIC(testNamespaceIndex, 10007), &dims);
|
||||
- ck_assert_int_eq(dims.arrayLength, 1);
|
||||
+ ck_assert_uint_eq(dims.arrayLength, 1);
|
||||
ck_assert_int_eq(*((UA_UInt32 *)dims.data), 0);
|
||||
UA_Variant_clear(&dims);
|
||||
UA_Server_readValueRank(server, UA_NODEID_NUMERIC(testNamespaceIndex, 10004), &rank);
|
||||
ck_assert_int_eq(rank, 1);
|
||||
UA_Server_readArrayDimensions(server, UA_NODEID_NUMERIC(testNamespaceIndex, 10004), &dims);
|
||||
- ck_assert_int_eq(dims.arrayLength, 1);
|
||||
+ ck_assert_uint_eq(dims.arrayLength, 1);
|
||||
ck_assert_int_eq(*((UA_UInt32 *)dims.data), 4);
|
||||
UA_Variant_clear(&dims);
|
||||
// 2-dim
|
||||
UA_Server_readValueRank(server, UA_NODEID_NUMERIC(testNamespaceIndex, 10006), &rank);
|
||||
ck_assert_int_eq(rank, 2);
|
||||
UA_Server_readArrayDimensions(server, UA_NODEID_NUMERIC(testNamespaceIndex, 10006), &dims);
|
||||
- ck_assert_int_eq(dims.arrayLength, 2);
|
||||
+ ck_assert_uint_eq(dims.arrayLength, 2);
|
||||
UA_UInt32 *dimensions = (UA_UInt32 *)dims.data;
|
||||
ck_assert_int_eq(dimensions[0], 2);
|
||||
ck_assert_int_eq(dimensions[1], 2);
|
42
misc/open62541/patches/patch-tests_server_check_interfaces_c
Normal file
42
misc/open62541/patches/patch-tests_server_check_interfaces_c
Normal file
@ -0,0 +1,42 @@
|
||||
Fix -Wsign-conversion compiler error.
|
||||
https://github.com/open62541/open62541/commit/ec42e5c65f9211eba13a5346822ab017b617bfff
|
||||
|
||||
Index: tests/server/check_interfaces.c
|
||||
--- tests/server/check_interfaces.c.orig
|
||||
+++ tests/server/check_interfaces.c
|
||||
@@ -56,7 +56,7 @@ START_TEST(check_interface_instantiation) {
|
||||
|
||||
UA_BrowsePathResult bpr = UA_Server_translateBrowsePathToNodeIds(server, &bp);
|
||||
ck_assert_int_eq(bpr.statusCode, UA_STATUSCODE_GOOD);
|
||||
- ck_assert_int_eq(bpr.targetsSize, 1);
|
||||
+ ck_assert_uint_eq(bpr.targetsSize, 1);
|
||||
|
||||
const UA_NodeId objectWithInterfacesId = bpr.targets->targetId.nodeId;
|
||||
UA_BrowsePathResult_clear(&bpr);
|
||||
@@ -73,7 +73,7 @@ START_TEST(check_interface_instantiation) {
|
||||
|
||||
UA_BrowseResult br = UA_Server_browse(server, 1000, &bd);
|
||||
ck_assert_int_eq(br.statusCode, UA_STATUSCODE_GOOD);
|
||||
- ck_assert_int_gt(br.referencesSize, 0);
|
||||
+ ck_assert_uint_gt(br.referencesSize, 0);
|
||||
|
||||
bool found = false;
|
||||
for (size_t i = 0; i < br.referencesSize; ++i) {
|
||||
@@ -150,7 +150,7 @@ START_TEST(check_interface_instantiation) {
|
||||
|
||||
bpr = UA_Server_translateBrowsePathToNodeIds(server, &bp);
|
||||
ck_assert_int_eq(bpr.statusCode, UA_STATUSCODE_GOOD);
|
||||
- ck_assert_int_eq(bpr.targetsSize, 1);
|
||||
+ ck_assert_uint_eq(bpr.targetsSize, 1);
|
||||
|
||||
const UA_NodeId baseObjectWithInterfaceId = bpr.targets->targetId.nodeId;
|
||||
UA_BrowsePathResult_clear(&bpr);
|
||||
@@ -164,7 +164,7 @@ START_TEST(check_interface_instantiation) {
|
||||
|
||||
br = UA_Server_browse(server, 1000, &bd);
|
||||
ck_assert_int_eq(br.statusCode, UA_STATUSCODE_GOOD);
|
||||
- ck_assert_int_gt(br.referencesSize, 0);
|
||||
+ ck_assert_uint_gt(br.referencesSize, 0);
|
||||
|
||||
found = false;
|
||||
for (size_t i = 0; i < br.referencesSize; ++i) {
|
@ -1,14 +0,0 @@
|
||||
https://github.com/open62541/open62541/commit/30ac5ddd892e6ce82bef4de7890f06854aca9736
|
||||
|
||||
Index: tests/server/check_server_userspace.c
|
||||
--- tests/server/check_server_userspace.c.orig
|
||||
+++ tests/server/check_server_userspace.c
|
||||
@@ -133,7 +133,7 @@ START_TEST(Server_forEachChildNodeCall) {
|
||||
|
||||
|
||||
START_TEST(Server_set_customHostname) {
|
||||
- UA_String customHost = UA_STRING("fancy-host");
|
||||
+ UA_String customHost = UA_STRING("localhost");
|
||||
UA_UInt16 port = 10042;
|
||||
|
||||
UA_Server *server = UA_Server_new();
|
@ -0,0 +1,24 @@
|
||||
Fix -Wsign-conversion compiler error.
|
||||
https://github.com/open62541/open62541/commit/4a0f9795165aa08aa4cad473bf5e066ab33d31fd
|
||||
|
||||
Index: tests/server/check_services_attributes.c
|
||||
--- tests/server/check_services_attributes.c.orig
|
||||
+++ tests/server/check_services_attributes.c
|
||||
@@ -199,7 +199,7 @@ START_TEST(ReadSingleServerAttribute) {
|
||||
UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_BOTH);
|
||||
|
||||
ck_assert_int_eq(resp.status, UA_STATUSCODE_GOOD);
|
||||
- ck_assert_int_eq(0, resp.value.arrayLength);
|
||||
+ ck_assert_uint_eq(0, resp.value.arrayLength);
|
||||
ck_assert_int_eq(resp.serverTimestamp, UA_DateTime_now());
|
||||
ck_assert_int_eq(resp.sourceTimestamp, UA_DateTime_now());
|
||||
UA_DataValue_clear(&resp);
|
||||
@@ -825,7 +825,7 @@ START_TEST(WriteSingleAttributeValueWithServerTimestam
|
||||
ck_assert(resp.hasValue);
|
||||
ck_assert_int_eq(20, *(UA_Int32*)resp.value.data);
|
||||
ck_assert(resp.hasServerTimestamp);
|
||||
- ck_assert_uint_eq(resp.serverTimestamp, UA_DateTime_now());
|
||||
+ ck_assert_int_eq(resp.serverTimestamp, UA_DateTime_now());
|
||||
UA_DataValue_clear(&resp);
|
||||
} END_TEST
|
||||
|
@ -1,83 +1,15 @@
|
||||
https://github.com/open62541/open62541/commit/7453262ccf8b26e622c4afa6ab5facfc42962663
|
||||
|
||||
https://github.com/open62541/open62541/commit/ba14327eac5489f95864d6208bc46516650db537
|
||||
Fix -Wsign-conversion compiler error.
|
||||
https://github.com/open62541/open62541/commit/4a0f9795165aa08aa4cad473bf5e066ab33d31fd
|
||||
|
||||
Index: tests/server/check_services_nodemanagement.c
|
||||
--- tests/server/check_services_nodemanagement.c.orig
|
||||
+++ tests/server/check_services_nodemanagement.c
|
||||
@@ -13,12 +13,16 @@
|
||||
#include <time.h>
|
||||
@@ -596,7 +596,7 @@ START_TEST(ObjectWithDynamicVariableChild) {
|
||||
|
||||
static UA_Server *server = NULL;
|
||||
+static void *sessionCalled = (void *)1;
|
||||
+static void *nodeCalled = (void *)2;
|
||||
static UA_Int32 handleCalled = 0;
|
||||
UA_BrowsePathResult bpr = UA_Server_translateBrowsePathToNodeIds(server, &bp);
|
||||
|
||||
static UA_StatusCode
|
||||
globalInstantiationMethod(UA_Server *server_,
|
||||
const UA_NodeId *sessionId, void *sessionContext,
|
||||
const UA_NodeId *nodeId, void **nodeContext) {
|
||||
+ sessionCalled = sessionContext;
|
||||
+ nodeCalled = *nodeContext;
|
||||
handleCalled++;
|
||||
return UA_STATUSCODE_GOOD;
|
||||
}
|
||||
@@ -34,6 +38,7 @@ static void setup(void) {
|
||||
lifecycle.createOptionalChild = NULL;
|
||||
lifecycle.generateChildNodeId = NULL;
|
||||
config->nodeLifecycle = lifecycle;
|
||||
+ UA_Server_setAdminSessionContext(server, (void *)0x3);
|
||||
}
|
||||
- ck_assert_int_eq(bpr.targetsSize, 1);
|
||||
+ ck_assert_uint_eq(bpr.targetsSize, 1);
|
||||
|
||||
static void teardown(void) {
|
||||
@@ -51,10 +56,42 @@ START_TEST(AddVariableNode) {
|
||||
UA_QualifiedName myIntegerName = UA_QUALIFIEDNAME(1, "the answer");
|
||||
UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
|
||||
UA_NodeId parentReferenceNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
|
||||
+ ck_assert_ptr_eq(sessionCalled, (void *)1);
|
||||
+ ck_assert_ptr_eq(nodeCalled, (void *)2);
|
||||
UA_StatusCode res =
|
||||
UA_Server_addVariableNode(server, myIntegerNodeId, parentNodeId,
|
||||
parentReferenceNodeId, myIntegerName,
|
||||
UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
|
||||
+ attr, (void *)4, NULL);
|
||||
+ ck_assert_int_eq(UA_STATUSCODE_GOOD, res);
|
||||
+ ck_assert_ptr_eq(sessionCalled, (void *)3);
|
||||
+ ck_assert_ptr_eq(nodeCalled, (void *)4);
|
||||
+} END_TEST
|
||||
+
|
||||
+START_TEST(AddVariableNode_ValueRankZero) {
|
||||
+ UA_VariableAttributes attr = UA_VariableAttributes_default;
|
||||
+ attr.displayName = UA_LOCALIZEDTEXT("en-US", "Array ValueRank 0");
|
||||
+ attr.accessLevel = UA_ACCESSLEVELMASK_READ | UA_ACCESSLEVELMASK_WRITE;
|
||||
+
|
||||
+ /* Set the variable value constraints */
|
||||
+ attr.dataType = UA_TYPES[UA_TYPES_DOUBLE].typeId;
|
||||
+ attr.valueRank = UA_VALUERANK_ONE_OR_MORE_DIMENSIONS;
|
||||
+
|
||||
+ /* Set the value */
|
||||
+ UA_UInt32 arrayDims[1] = {2};
|
||||
+ UA_Double zero[2] = {0.0, 0.0};
|
||||
+ UA_Variant_setArray(&attr.value, zero, 2, &UA_TYPES[UA_TYPES_DOUBLE]);
|
||||
+ attr.value.arrayDimensions = arrayDims;
|
||||
+ attr.value.arrayDimensionsSize = 1;
|
||||
+
|
||||
+ UA_NodeId myNodeId = UA_NODEID_STRING(1, "array0");
|
||||
+ UA_QualifiedName myName = UA_QUALIFIEDNAME(1, "array0");
|
||||
+ UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
|
||||
+ UA_NodeId parentReferenceNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
|
||||
+ UA_StatusCode res =
|
||||
+ UA_Server_addVariableNode(server, myNodeId, parentNodeId,
|
||||
+ parentReferenceNodeId, myName,
|
||||
+ UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
|
||||
attr, NULL, NULL);
|
||||
ck_assert_int_eq(UA_STATUSCODE_GOOD, res);
|
||||
} END_TEST
|
||||
@@ -593,6 +630,7 @@ int main(void) {
|
||||
TCase *tc_addnodes = tcase_create("addnodes");
|
||||
tcase_add_checked_fixture(tc_addnodes, setup, teardown);
|
||||
tcase_add_test(tc_addnodes, AddVariableNode);
|
||||
+ tcase_add_test(tc_addnodes, AddVariableNode_ValueRankZero);
|
||||
tcase_add_test(tc_addnodes, AddVariableNode_ExtensionObject);
|
||||
tcase_add_test(tc_addnodes, InstantiateVariableTypeNode);
|
||||
tcase_add_test(tc_addnodes, InstantiateVariableTypeNodeWrongDims);
|
||||
UA_WriteValue wv;
|
||||
UA_WriteValue_init(&wv);
|
||||
|
@ -1,14 +0,0 @@
|
||||
https://github.com/open62541/open62541/commit/1654d021012b93ff669c022499fd80c47a73e72e
|
||||
|
||||
Index: tests/testing-plugins/testing_networklayers.c
|
||||
--- tests/testing-plugins/testing_networklayers.c.orig
|
||||
+++ tests/testing-plugins/testing_networklayers.c
|
||||
@@ -61,7 +61,7 @@ UA_Connection createDummyConnection(size_t sendBufferS
|
||||
c.state = UA_CONNECTION_ESTABLISHED;
|
||||
c.config = UA_ConnectionConfig_default;
|
||||
c.channel = NULL;
|
||||
- c.sockfd = 0;
|
||||
+ c.sockfd = UA_INVALID_SOCKET;
|
||||
c.handle = NULL;
|
||||
c.incompleteChunk = UA_BYTESTRING_NULL;
|
||||
c.getSendBuffer = dummyGetSendBuffer;
|
@ -85,8 +85,6 @@ share/open62541/tools/ua-nodeset/FDI/OpcUaFdiPart5Model.xml
|
||||
share/open62541/tools/ua-nodeset/FDI/OpcUaFdiPart7Model.csv
|
||||
share/open62541/tools/ua-nodeset/FDI/OpcUaFdiPart7Model.xml
|
||||
share/open62541/tools/ua-nodeset/FDT/
|
||||
share/open62541/tools/ua-nodeset/FDT/NodeIds.csv
|
||||
share/open62541/tools/ua-nodeset/FDT/Opc.Ua.FDT.NodeSet2.xml
|
||||
share/open62541/tools/ua-nodeset/GDS/
|
||||
share/open62541/tools/ua-nodeset/GDS/Opc.Ua.Gds.Classes.cs
|
||||
share/open62541/tools/ua-nodeset/GDS/Opc.Ua.Gds.Constants.cs
|
||||
@ -140,16 +138,6 @@ share/open62541/tools/ua-nodeset/MachineVision/
|
||||
share/open62541/tools/ua-nodeset/MachineVision/NodeIds.csv
|
||||
share/open62541/tools/ua-nodeset/MachineVision/Opc.Ua.MachineVision.NodeSet2.xml
|
||||
share/open62541/tools/ua-nodeset/PLCopen/
|
||||
share/open62541/tools/ua-nodeset/PLCopen/Opc.Ua.Plc.Classes.cs
|
||||
share/open62541/tools/ua-nodeset/PLCopen/Opc.Ua.Plc.Constants.cs
|
||||
share/open62541/tools/ua-nodeset/PLCopen/Opc.Ua.Plc.DataTypes.cs
|
||||
share/open62541/tools/ua-nodeset/PLCopen/Opc.Ua.Plc.NodeSet2.xml
|
||||
share/open62541/tools/ua-nodeset/PLCopen/Opc.Ua.Plc.PredefinedNodes.uanodes
|
||||
share/open62541/tools/ua-nodeset/PLCopen/Opc.Ua.Plc.PredefinedNodes.xml
|
||||
share/open62541/tools/ua-nodeset/PLCopen/Opc.Ua.Plc.Types.bsd
|
||||
share/open62541/tools/ua-nodeset/PLCopen/Opc.Ua.Plc.Types.xsd
|
||||
share/open62541/tools/ua-nodeset/PLCopen/OpcUaPLCopenModel.csv
|
||||
share/open62541/tools/ua-nodeset/PLCopen/OpcUaPLCopenModel.xml
|
||||
share/open62541/tools/ua-nodeset/POWERLINK/
|
||||
share/open62541/tools/ua-nodeset/POWERLINK/Opc.Ua.POWERLINK.NodeIds.csv
|
||||
share/open62541/tools/ua-nodeset/POWERLINK/Opc.Ua.POWERLINK.NodeSet2.xml
|
||||
|
@ -1,35 +1,35 @@
|
||||
include/aa_tree.h
|
||||
@comment include/ms_stdint.h
|
||||
include/open62541/
|
||||
include/open62541/architecture_base.h
|
||||
include/open62541/architecture_definitions.h
|
||||
include/open62541/architecture_functions.h
|
||||
include/open62541/client.h
|
||||
include/open62541/client_config.h
|
||||
include/open62541/client_config_default.h
|
||||
include/open62541/client_highlevel.h
|
||||
include/open62541/client_highlevel_async.h
|
||||
include/open62541/client_subscriptions.h
|
||||
include/open62541/common.h
|
||||
include/open62541/config.h
|
||||
include/open62541/constants.h
|
||||
include/open62541/ms_stdint.h
|
||||
include/open62541/network_tcp.h
|
||||
include/open62541/nodeids.h
|
||||
include/open62541/plugin/
|
||||
include/open62541/plugin/accesscontrol.h
|
||||
include/open62541/plugin/accesscontrol_default.h
|
||||
include/open62541/plugin/create_certificate.h
|
||||
include/open62541/plugin/log.h
|
||||
include/open62541/plugin/log_stdout.h
|
||||
include/open62541/plugin/log_syslog.h
|
||||
include/open62541/plugin/network.h
|
||||
include/open62541/plugin/nodestore.h
|
||||
include/open62541/plugin/nodestore_default.h
|
||||
include/open62541/plugin/pki.h
|
||||
include/open62541/plugin/pki_default.h
|
||||
include/open62541/plugin/pubsub.h
|
||||
include/open62541/plugin/securitypolicy.h
|
||||
include/open62541/plugin/securitypolicy_default.h
|
||||
include/open62541/plugin/securitypolicy_mbedtls_common.h
|
||||
include/open62541/posix/
|
||||
include/open62541/posix/ua_architecture.h
|
||||
include/open62541/server.h
|
||||
include/open62541/server_config.h
|
||||
include/open62541/server_config_default.h
|
||||
include/open62541/server_pubsub.h
|
||||
include/open62541/statuscodes.h
|
||||
@ -37,9 +37,10 @@ include/open62541/types.h
|
||||
include/open62541/types_generated.h
|
||||
include/open62541/types_generated_handling.h
|
||||
include/open62541/util.h
|
||||
include/open62541/ziptree.h
|
||||
@comment include/ziptree.h
|
||||
lib/cmake/
|
||||
lib/cmake/open62541/
|
||||
lib/cmake/open62541/FindMbedTLS.cmake
|
||||
lib/cmake/open62541/open62541Config.cmake
|
||||
lib/cmake/open62541/open62541ConfigVersion.cmake
|
||||
lib/cmake/open62541/open62541Macros.cmake
|
||||
@ -63,6 +64,7 @@ share/examples/open62541/client_connect.c
|
||||
share/examples/open62541/client_connect_loop.c
|
||||
share/examples/open62541/client_connectivitycheck_loop.c
|
||||
share/examples/open62541/client_historical.c
|
||||
share/examples/open62541/client_method_async.c
|
||||
share/examples/open62541/client_subscription_loop.c
|
||||
share/examples/open62541/common.h
|
||||
share/examples/open62541/custom_datatype/
|
||||
@ -75,8 +77,14 @@ share/examples/open62541/discovery/server_lds.c
|
||||
share/examples/open62541/discovery/server_multicast.c
|
||||
share/examples/open62541/discovery/server_register.c
|
||||
share/examples/open62541/encryption/
|
||||
share/examples/open62541/encryption/README_client_server_tpm_keystore.txt
|
||||
share/examples/open62541/encryption/client_encryption.c
|
||||
share/examples/open62541/encryption/client_encryption_tpm_keystore.c
|
||||
share/examples/open62541/encryption/server_encryption.c
|
||||
share/examples/open62541/encryption/server_encryption_tpm_keystore.c
|
||||
share/examples/open62541/events/
|
||||
share/examples/open62541/events/client_eventfilter.c
|
||||
share/examples/open62541/events/server_random_events.c
|
||||
share/examples/open62541/nodeset/
|
||||
share/examples/open62541/nodeset/CMakeLists.txt
|
||||
share/examples/open62541/nodeset/Opc.Ua.POWERLINK.NodeSet2.bsd
|
||||
@ -90,31 +98,71 @@ share/examples/open62541/nodeset/testnodeset.csv
|
||||
share/examples/open62541/nodeset/testnodeset.xml
|
||||
share/examples/open62541/nodeset/testtypes.bsd
|
||||
share/examples/open62541/pubsub/
|
||||
share/examples/open62541/pubsub/README_pubsub_tpm2_pkcs11.txt
|
||||
share/examples/open62541/pubsub/README_pubsub_tpm_keystore.txt
|
||||
share/examples/open62541/pubsub/example_publisher.bin
|
||||
share/examples/open62541/pubsub/monitoring/
|
||||
share/examples/open62541/pubsub/monitoring/server_pubsub_subscribe_custom_monitoring.c
|
||||
share/examples/open62541/pubsub/pubsub_publish_encrypted.c
|
||||
share/examples/open62541/pubsub/pubsub_publish_encrypted_tpm.c
|
||||
share/examples/open62541/pubsub/pubsub_publish_encrypted_tpm_keystore.c
|
||||
share/examples/open62541/pubsub/pubsub_subscribe_encrypted.c
|
||||
share/examples/open62541/pubsub/pubsub_subscribe_encrypted_tpm.c
|
||||
share/examples/open62541/pubsub/pubsub_subscribe_encrypted_tpm_keystore.c
|
||||
share/examples/open62541/pubsub/pubsub_subscribe_standalone.c
|
||||
share/examples/open62541/pubsub/server_pubsub_file_configuration.c
|
||||
share/examples/open62541/pubsub/server_pubsub_publisher_iop.c
|
||||
share/examples/open62541/pubsub/server_pubsub_publisher_rt_level.c
|
||||
share/examples/open62541/pubsub/server_pubsub_publisher_rt_level_raw.c
|
||||
share/examples/open62541/pubsub/server_pubsub_rt_field_information_model.c
|
||||
share/examples/open62541/pubsub/server_pubsub_subscriber_rt_level.c
|
||||
share/examples/open62541/pubsub/tutorial_pubsub_connection.c
|
||||
share/examples/open62541/pubsub/tutorial_pubsub_mqtt_publish.c
|
||||
share/examples/open62541/pubsub/tutorial_pubsub_publish.c
|
||||
share/examples/open62541/pubsub/tutorial_pubsub_publish_raw.c
|
||||
share/examples/open62541/pubsub/tutorial_pubsub_subscribe.c
|
||||
share/examples/open62541/pubsub/tutorial_pubsub_subscribe_raw.c
|
||||
share/examples/open62541/pubsub_realtime/
|
||||
share/examples/open62541/pubsub_realtime/README.md
|
||||
share/examples/open62541/pubsub_realtime/bufmalloc.c
|
||||
share/examples/open62541/pubsub_realtime/bufmalloc.h
|
||||
share/examples/open62541/pubsub_realtime/README_pubsub_TSN.txt
|
||||
share/examples/open62541/pubsub_realtime/Readme_PubSub.txt
|
||||
share/examples/open62541/pubsub_realtime/etfa18-pfrommer-tsn-pubsub.pdf
|
||||
share/examples/open62541/pubsub_realtime/nodeset/
|
||||
share/examples/open62541/pubsub_realtime/nodeset/CMakeLists.txt
|
||||
share/examples/open62541/pubsub_realtime/nodeset/pubDataModel.csv
|
||||
share/examples/open62541/pubsub_realtime/nodeset/pubDataModel.xml
|
||||
share/examples/open62541/pubsub_realtime/nodeset/pubsub_nodeset_rt_publisher.c
|
||||
share/examples/open62541/pubsub_realtime/nodeset/pubsub_nodeset_rt_subscriber.c
|
||||
share/examples/open62541/pubsub_realtime/nodeset/subDataModel.csv
|
||||
share/examples/open62541/pubsub_realtime/nodeset/subDataModel.xml
|
||||
share/examples/open62541/pubsub_realtime/opc-ua-tsn-wrs.pdf
|
||||
share/examples/open62541/pubsub_realtime/pubsub_TSN_loopback.c
|
||||
share/examples/open62541/pubsub_realtime/pubsub_TSN_loopback_single_thread.c
|
||||
share/examples/open62541/pubsub_realtime/pubsub_TSN_publisher.c
|
||||
share/examples/open62541/pubsub_realtime/pubsub_TSN_publisher_multiple_thread.c
|
||||
share/examples/open62541/pubsub_realtime/pubsub_interrupt_publish.c
|
||||
share/examples/open62541/pubsub_realtime/start_rt_publish.sh
|
||||
share/examples/open62541/pubsub_realtime/vxworks/
|
||||
share/examples/open62541/pubsub_realtime/vxworks/README.md
|
||||
share/examples/open62541/pubsub_realtime/vxworks/pubsub_interrupt_publish_tsn.c
|
||||
share/examples/open62541/server.cpp
|
||||
share/examples/open62541/server_ctt.c
|
||||
share/examples/open62541/server_inheritance.c
|
||||
share/examples/open62541/server_instantiation.c
|
||||
share/examples/open62541/server_loglevel.c
|
||||
share/examples/open62541/server_mainloop.c
|
||||
share/examples/open62541/server_repeated_job.c
|
||||
share/examples/open62541/server_settimestamp.c
|
||||
share/examples/open62541/tutorial_client_events.c
|
||||
share/examples/open62541/tutorial_client_firststeps.c
|
||||
share/examples/open62541/tutorial_datatypes.c
|
||||
share/examples/open62541/tutorial_server_alarms_conditions.c
|
||||
share/examples/open62541/tutorial_server_datasource.c
|
||||
share/examples/open62541/tutorial_server_events.c
|
||||
share/examples/open62541/tutorial_server_firststeps.c
|
||||
share/examples/open62541/tutorial_server_historicaldata.c
|
||||
share/examples/open62541/tutorial_server_method.c
|
||||
share/examples/open62541/tutorial_server_method_async.c
|
||||
share/examples/open62541/tutorial_server_monitoreditems.c
|
||||
share/examples/open62541/tutorial_server_object.c
|
||||
share/examples/open62541/tutorial_server_variable.c
|
||||
@ -136,22 +184,27 @@ share/open62541/tools/nodeset_compiler/backend_graphviz.py
|
||||
share/open62541/tools/nodeset_compiler/backend_open62541.py
|
||||
share/open62541/tools/nodeset_compiler/backend_open62541_datatypes.py
|
||||
share/open62541/tools/nodeset_compiler/backend_open62541_nodes.py
|
||||
share/open62541/tools/nodeset_compiler/backend_open62541_typedefinitions.py
|
||||
share/open62541/tools/nodeset_compiler/datatypes.py
|
||||
share/open62541/tools/nodeset_compiler/nodes.py
|
||||
share/open62541/tools/nodeset_compiler/nodeset.py
|
||||
share/open62541/tools/nodeset_compiler/nodeset_compiler.py
|
||||
share/open62541/tools/nodeset_compiler/nodeset_testing.py
|
||||
share/open62541/tools/nodeset_compiler/opaque_type_mapping.py
|
||||
share/open62541/tools/nodeset_compiler/type_parser.py
|
||||
share/open62541/tools/schema/
|
||||
share/open62541/tools/schema/Custom.Opc.Ua.Transport.bsd
|
||||
share/open62541/tools/schema/NodeIds.csv
|
||||
share/open62541/tools/schema/Opc.Ua.NodeSet2.DiagnosticsMinimal.xml
|
||||
share/open62541/tools/schema/Opc.Ua.NodeSet2.EventsMinimal.xml
|
||||
share/open62541/tools/schema/Opc.Ua.NodeSet2.HistorizingMinimal.xml
|
||||
share/open62541/tools/schema/Opc.Ua.NodeSet2.Minimal.xml
|
||||
share/open62541/tools/schema/Opc.Ua.NodeSet2.Part8_Subset.xml
|
||||
share/open62541/tools/schema/Opc.Ua.NodeSet2.PubSubMinimal.xml
|
||||
share/open62541/tools/schema/Opc.Ua.NodeSet2.Reduced.xml
|
||||
share/open62541/tools/schema/Opc.Ua.Types.bsd
|
||||
share/open62541/tools/schema/StatusCode.csv
|
||||
share/open62541/tools/schema/datatypes_dataaccess.txt
|
||||
share/open62541/tools/schema/datatypes_diagnostics.txt
|
||||
share/open62541/tools/schema/datatypes_discovery.txt
|
||||
share/open62541/tools/schema/datatypes_events.txt
|
||||
share/open62541/tools/schema/datatypes_historizing.txt
|
||||
@ -161,5 +214,6 @@ share/open62541/tools/schema/datatypes_pubsub.txt
|
||||
share/open62541/tools/schema/datatypes_query.txt
|
||||
share/open62541/tools/schema/datatypes_subscriptions.txt
|
||||
share/open62541/tools/schema/datatypes_transport.txt
|
||||
share/open62541/tools/schema/datatypes_typedescription.txt
|
||||
share/open62541/tools/ua-nodeset/
|
||||
%%ns0_full%%
|
||||
|
Loading…
x
Reference in New Issue
Block a user