diff options
Diffstat (limited to 'src/server_register.c')
| -rw-r--r-- | src/server_register.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/server_register.c b/src/server_register.c index c45949b..7c90701 100644 --- a/src/server_register.c +++ b/src/server_register.c @@ -18,6 +18,7 @@ #include <open62541/server.h> #include <signal.h> +#include <stdbool.h> #include <stdlib.h> #include <string.h> #include <time.h> @@ -127,11 +128,26 @@ main (int argc, char **argv) signal (SIGTERM, _s_stop_handler); srand ((unsigned)time (NULL)); + /* Check for --static flag (disables periodic node randomization). */ + bool static_nodes = false; + for (int i = 1; i < argc; i++) + { + if (strcmp (argv[i], "--static") == 0) + { + static_nodes = true; + /* Remove the flag from argv so positional parsing is unaffected. */ + for (int j = i; j < argc - 1; j++) + argv[j] = argv[j + 1]; + argc--; + i--; + } + } + if (argc < 4 || argc > 6) { UA_LOG_FATAL (UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "Usage: %s <server-config> <client-config> " - "<discovery-url> [nodes-config] [log-level]", + "<discovery-url> [nodes-config] [log-level] [--static]", argv[0]); return EXIT_FAILURE; } @@ -262,8 +278,9 @@ main (int argc, char **argv) if (nodes_cfg.count > 0) { nodes_config_randomize (server, &nodes_cfg); - UA_Server_addRepeatedCallback (server, _s_update_nodes_cb, &nodes_cfg, - 5000, &update_cb_id); + if (!static_nodes) + UA_Server_addRepeatedCallback (server, _s_update_nodes_cb, &nodes_cfg, + 5000, &update_cb_id); } retval = _s_register_with_lds (server, &lds_params, discovery_endpoint); |
