From 7c7b6dd451638776c5860d9ac649daad57a67f77 Mon Sep 17 00:00:00 2001 From: semtagg Date: Mon, 31 Oct 2022 13:07:47 +0300 Subject: [PATCH 01/48] add logging for services__execute_file function --- lib/services/services_linux.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 8dbcc6d2590..974d4cf8807 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1226,6 +1226,11 @@ services__execute_file(svc_action_t *op) goto done; } + log_op_output(op); + crm_log_output(LOG_INFO, &"action", op->action); + crm_log_output(LOG_INFO, &"agent", op->agent); + crm_log_output(LOG_INFO, &"povider",op->provider); + op->pid = fork(); switch (op->pid) { case -1: From bc62a2f5a2517a397e064363574b47d1fb4457fe Mon Sep 17 00:00:00 2001 From: semtagg Date: Mon, 31 Oct 2022 15:49:28 +0300 Subject: [PATCH 02/48] fix --- lib/services/services_linux.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 974d4cf8807..629ef2393df 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1227,9 +1227,9 @@ services__execute_file(svc_action_t *op) } log_op_output(op); - crm_log_output(LOG_INFO, &"action", op->action); - crm_log_output(LOG_INFO, &"agent", op->agent); - crm_log_output(LOG_INFO, &"povider",op->provider); + crm_log_output(LOG_INFO, "action", op->action); + crm_log_output(LOG_INFO, "agent", op->agent); + crm_log_output(LOG_INFO, "povider",op->provider); op->pid = fork(); switch (op->pid) { From d8398c2db3b1d98e107848f98ffd749ab3cb09c1 Mon Sep 17 00:00:00 2001 From: semtagg Date: Mon, 7 Nov 2022 18:15:19 +0300 Subject: [PATCH 03/48] wip --- .vscode/settings.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000000..6d40f422fd5 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "resource.h": "c" + } +} \ No newline at end of file From e03b8633eafeada3d026bbe9188cc1a6498bf268 Mon Sep 17 00:00:00 2001 From: semtagg Date: Mon, 7 Nov 2022 18:15:58 +0300 Subject: [PATCH 04/48] wip --- lib/services/services_linux.c | 36 +++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 629ef2393df..842b420b9b7 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -1226,10 +1227,37 @@ services__execute_file(svc_action_t *op) goto done; } - log_op_output(op); - crm_log_output(LOG_INFO, "action", op->action); - crm_log_output(LOG_INFO, "agent", op->agent); - crm_log_output(LOG_INFO, "povider",op->provider); + void *handle; + int (*exec)(svc_action_t *op); + char *lib_error; + int exec_status; + handle = dlopen (op->agent, RTLD_LAZY); + + if (!handle) { + crm_info("Cannot execute shared library"); + } else { + exec = dlsym(handle, op->action); + + if ((lib_error = dlerror()) != NULL){ + crm_info("Shared library doesnot contain method"); + } else { + exec_status = exec(op); + + if (exec_status) { + close_pipe(stdin_fd); + close_pipe(stdout_fd); + close_pipe(stderr_fd); + sigchld_cleanup(&data); + free(lib_error); + + return pcmk_rc_ok; + } + + crm_info("Cannot execute resource with shared library"); + } + } + + free(lib_error); op->pid = fork(); switch (op->pid) { From 7cb9518c45b67556527685f5899a94685b384457 Mon Sep 17 00:00:00 2001 From: semtagg Date: Mon, 7 Nov 2022 18:54:27 +0300 Subject: [PATCH 05/48] wip --- lib/services/services_linux.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 842b420b9b7..295d5e144a3 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1227,6 +1227,8 @@ services__execute_file(svc_action_t *op) goto done; } + { + void *handle; int (*exec)(svc_action_t *op); char *lib_error; @@ -1239,6 +1241,8 @@ services__execute_file(svc_action_t *op) exec = dlsym(handle, op->action); if ((lib_error = dlerror()) != NULL){ + free(lib_error); + crm_info("Shared library doesnot contain method"); } else { exec_status = exec(op); @@ -1248,7 +1252,6 @@ services__execute_file(svc_action_t *op) close_pipe(stdout_fd); close_pipe(stderr_fd); sigchld_cleanup(&data); - free(lib_error); return pcmk_rc_ok; } @@ -1257,8 +1260,7 @@ services__execute_file(svc_action_t *op) } } - free(lib_error); - + } op->pid = fork(); switch (op->pid) { case -1: From d05b06512a21e0e8e0d9f7b18d8fa82890d951ec Mon Sep 17 00:00:00 2001 From: semtagg Date: Tue, 8 Nov 2022 22:12:59 +0300 Subject: [PATCH 06/48] add new agent as shared library for tests with makefile --- lib/libagent/libwritedata.c | 0 lib/services/services_linux.c | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 lib/libagent/libwritedata.c diff --git a/lib/libagent/libwritedata.c b/lib/libagent/libwritedata.c new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 295d5e144a3..767ae92375f 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1259,8 +1259,10 @@ services__execute_file(svc_action_t *op) crm_info("Cannot execute resource with shared library"); } } + // dlclose(handle); } + op->pid = fork(); switch (op->pid) { case -1: From a457aec2ad6a4a6110082943de38caa586adbe2a Mon Sep 17 00:00:00 2001 From: semtagg Date: Wed, 9 Nov 2022 00:18:02 +0300 Subject: [PATCH 07/48] add simple action for test --- lib/libagent/libwritedata.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/libagent/libwritedata.c b/lib/libagent/libwritedata.c index e69de29bb2d..00c5666beb7 100644 --- a/lib/libagent/libwritedata.c +++ b/lib/libagent/libwritedata.c @@ -0,0 +1,9 @@ +#include + +int start(){ + FILE *f; + f = fopen("/var/log/test.txt", "w+"); + fprintf(f, "Test line. \n"); + fclose(f); + return 1; +} \ No newline at end of file From 1c99ef17758a9fad8e7e706b7a028de39ac3f0a8 Mon Sep 17 00:00:00 2001 From: semtagg Date: Mon, 28 Nov 2022 18:40:51 +0300 Subject: [PATCH 08/48] added minimal working version --- lib/libagent/libtest.c | 281 ++++++++++++++++++++++++++++++++++ lib/libagent/libtest.so | Bin 0 -> 25200 bytes lib/libagent/libwritedata.c | 9 -- lib/services/services_linux.c | 126 ++++++++++----- 4 files changed, 370 insertions(+), 46 deletions(-) create mode 100644 lib/libagent/libtest.c create mode 100755 lib/libagent/libtest.so delete mode 100644 lib/libagent/libwritedata.c diff --git a/lib/libagent/libtest.c b/lib/libagent/libtest.c new file mode 100644 index 00000000000..5d080a2bff6 --- /dev/null +++ b/lib/libagent/libtest.c @@ -0,0 +1,281 @@ +#include +#include +#include +#include +#include +#include + +#define OCF_SUCCESS 0 +#define OCF_ERR_GENERIC 1 +#define OCF_ERR_ARGS 2 +#define OCF_ERR_UNIMPLEMENTED 3 +#define OCF_ERR_PERM 4 +#define OCF_ERR_INSTALLED 5 +#define OCF_ERR_CONFIGURED 6 +#define OCF_NOT_RUNNING 7 + +static const char START_CMD[] = "start"; +static const char STOP_CMD[] = "stop"; +static const char STATUS_CMD[] = "status"; +static const char MONITOR_CMD[] = "monitor"; +static const char META_DATA_CMD[] = "meta-data"; + +const char my_interp[] __attribute__((section(".interp"))) = "/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2"; + +int +start(void) { + static const char mes[] = "Hello from 'Start action' test agent.\n"; + int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + + write(fd, mes, sizeof(mes)); + close(fd); + + return OCF_SUCCESS; +} + +int +stop(void) { + static const char mes[] = "Hello from 'Stop action' test agent.\n"; + int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + + write(fd, mes, sizeof(mes)); + close(fd); + + return OCF_SUCCESS; +} + +int +status(void) { + static const char mes[] = "Hello from 'Status action' test agent.\n"; + int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + + write(fd, mes, sizeof(mes)); + close(fd); + + return OCF_SUCCESS; +} + +int +monitor(void) { + static const char mes[] = "Hello from 'Monitor action' test agent.\n"; + //int fd = open("/var/log/test.log", O_WRONLY | O_APPEND | O_CREAT, 0666); + int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + + write(fd, mes, sizeof(mes)); + close(fd); + + return OCF_SUCCESS; +} + +int +metadata(int stdout, int stderr) { + static const char mes[] = "Hello from 'Metadata action' test agent.\n"; + int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + + write(fd, mes, sizeof(mes)); + close(fd); + + static const char meta_data[]= + "\n" + "\n" + "\n" + " 1.0\n" + " \n" + " This script is used to write data to a file.\n" + " \n" + " Test agent\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\n"; + + write(stdout, meta_data, sizeof(meta_data)); + return OCF_SUCCESS; +} + +int +handler(int out_fd, int err_fd, char *action) { + int ret = 0; + if (strcmp(action, START_CMD) == 0){ + ret = start(); + } else if (strcmp(action, STOP_CMD) == 0) { + ret = stop(); + } else if (strcmp(action, STATUS_CMD) == 0) { + ret = status(); + } else if (strcmp(action, MONITOR_CMD) == 0) { + ret = monitor(); + } else if (strcmp(action, META_DATA_CMD) == 0) { + ret = metadata(out_fd, err_fd); + } + + return ret; +} + +int +mmain() { + // return code + int ret = 0; + // is used to get parameters + char *stack_address = __builtin_frame_address(0); + // skip 24 bytes: ret address, argc, exec name + char **argv = stack_address + 0x18; + // parse action + if (strcmp(*argv, START_CMD) == 0){ + ret = start(); + } else if (strcmp(*argv, STOP_CMD) == 0) { + ret = stop(); + } else if (strcmp(*argv, STATUS_CMD) == 0) { + ret = status(); + } else if (strcmp(*argv, MONITOR_CMD) == 0) { + ret = monitor(); + } else if (strcmp(*argv, META_DATA_CMD) == 0) { + ret = metadata(1, 2); + } + + _exit(ret); +} + +// #include +// #include +// #include +// #include +// #include +// #include + +// #define OCF_SUCCESS 0 +// #define OCF_ERR_GENERIC 1 +// #define OCF_ERR_ARGS 2 +// #define OCF_ERR_UNIMPLEMENTED 3 +// #define OCF_ERR_PERM 4 +// #define OCF_ERR_INSTALLED 5 +// #define OCF_ERR_CONFIGURED 6 +// #define OCF_NOT_RUNNING 7 + +// static const char START_CMD[] = "start"; +// static const char STOP_CMD[] = "stop"; +// static const char STATUS_CMD[] = "status"; +// static const char MONITOR_CMD[] = "monitor"; +// static const char META_DATA_CMD[] = "meta-data"; + +// const char my_interp[] __attribute__((section(".interp"))) = "/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2"; + + +// int +// start(void) { +// static const char mes[] = "Hello from 'Start action' test agent.\n"; +// int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + +// write(fd, mes, sizeof(mes)); +// close(fd); + +// return OCF_SUCCESS; +// } + +// int +// stop(void) { +// static const char mes[] = "Hello from 'Stop action' test agent.\n"; +// int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + +// write(fd, mes, sizeof(mes)); +// close(fd); + +// return OCF_SUCCESS; +// } + +// int +// status(void) { +// static const char mes[] = "Hello from 'Status action' test agent.\n"; +// int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + +// write(fd, mes, sizeof(mes)); +// close(fd); + +// return OCF_SUCCESS; +// } + +// int +// monitor(void) { +// static const char mes[] = "Hello from 'Monitor action' test agent.\n"; +// // int fd = open("/var/log/test.log", O_WRONLY | O_APPEND | O_CREAT, 0666); +// int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); +// write(fd, mes, sizeof(mes)); +// close(fd); + +// return OCF_SUCCESS; +// } + +// int +// metadata(int stdout, int stderr) { +// static const char mes[] = "Hello from 'Meta-data action' test agent.\n"; +// int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + +// write(fd, mes, sizeof(mes)); +// close(fd); + +// static const char meta_data[]= +// "\n" +// "\n" +// "\n" +// " 1.0\n" +// " \n" +// " This script is used to write data to a file.\n" +// " \n" +// " Test agent\n" +// " \n" +// " \n" +// " \n" +// " \n" +// " \n" +// " \n" +// "\n"; + +// write(stdout, meta_data, sizeof(meta_data)); +// return OCF_SUCCESS; +// } + + +// int +// handler(int out_fd, int err_fd, char *action) { +// int ret = 0; +// if (strcmp(action, START_CMD) == 0){ +// ret = start(); +// } else if (strcmp(action, STOP_CMD) == 0) { +// ret = stop(); +// } else if (strcmp(action, STATUS_CMD) == 0) { +// ret = status(); +// } else if (strcmp(action, MONITOR_CMD) == 0) { +// ret = monitor(); +// } else if (strcmp(action, META_DATA_CMD) == 0) { +// ret = metadata(out_fd, err_fd); +// } + +// return ret; +// } + +// int +// mmain() { +// // return code +// int ret = 0; +// // is used to get parameters +// char *stack_address = __builtin_frame_address(0); +// // skip 24 bytes: ret address, argc, exec name +// char **argv = stack_address + 0x18; +// // parse action +// if (strcmp(*argv, START_CMD) == 0){ +// ret = start(); +// } else if (strcmp(*argv, STOP_CMD) == 0) { +// ret = stop(); +// } else if (strcmp(*argv, STATUS_CMD) == 0) { +// ret = status(); +// } else if (strcmp(*argv, MONITOR_CMD) == 0) { +// ret = monitor(); +// } else if (strcmp(*argv, META_DATA_CMD) == 0) { +// ret = metadata(1, 2); +// } + +// _exit(ret); +// } \ No newline at end of file diff --git a/lib/libagent/libtest.so b/lib/libagent/libtest.so new file mode 100755 index 0000000000000000000000000000000000000000..04ddf3287d4a3866cd0883cd3f50d0b12f6126e3 GIT binary patch literal 25200 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 - -int start(){ - FILE *f; - f = fopen("/var/log/test.txt", "w+"); - fprintf(f, "Test line. \n"); - fclose(f); - return 1; -} \ No newline at end of file diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 767ae92375f..dcd11ace59b 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -24,6 +24,9 @@ #include #include #include +#include +#include + #include "crm/crm.h" #include "crm/common/mainloop.h" @@ -1006,6 +1009,7 @@ action_launch_child(svc_action_t *op) // An earlier stat() should have avoided most possible errors rc = errno; + crm_info("PCMK_NOT_INSTALLED - action_launch_child, action - '%s'", op->action); services__handle_exec_error(op, rc); crm_err("Unable to execute %s: %s", op->id, strerror(rc)); exit_child(op, op->rc, "Child process was unable to execute file"); @@ -1168,6 +1172,90 @@ wait_for_sync_result(svc_action_t *op, struct sigchld_data_s *data) int services__execute_file(svc_action_t *op) { + void *handle; + int (*exec)(int, int, char *); + char *lib_error; + int exec_status; + char dst[1024] = "/usr/lib/ocf/resource.d/heartbeat/"; + strcat(dst, op->agent); + handle = dlopen (dst, RTLD_NOW | RTLD_LOCAL); + + if (!handle) { + crm_info("1"); + crm_info("Cannot execute '%s'", op->action); + crm_info("Cannot execute '%s'", op->agent); + } else { + crm_info("2"); + crm_info("Execute action: '%s'", op->action); + crm_info("Execute synchro: '%d'", op->synchronous); + exec = dlsym(handle, "handler"); + + if ((lib_error = dlerror()) != NULL){ + free(lib_error); + + crm_info("Shared library doesnot contain method"); + } else { + char num[10]; + int out_fd; + int err_fd; + char out_file_name[1024] = "outfd-"; + char err_file_name[1024] = "errfd-"; + sprintf(num, "%d", getpid()); + strcat(out_file_name, num); + strcat(err_file_name, num); + + out_fd = memfd_create(out_file_name, MFD_ALLOW_SEALING); + err_fd = memfd_create(err_file_name, MFD_ALLOW_SEALING); + + exec_status = exec(out_fd, err_fd, op->action); + { + int size_out = lseek(out_fd, 0, SEEK_END); // SEEK_CUR ? + int size_err = lseek(err_fd, 0, SEEK_END); + if (size_out > 0) { + char *buf_out = (char *)malloc(sizeof(char) * (size_out + 1)); + lseek(out_fd, 0, SEEK_SET); + if (read(out_fd, buf_out, size_out) >= 0) { + buf_out[size_out] = '\0'; + op->stdout_data = buf_out; + } + } else { + op->stdout_data = NULL; + } + + if (size_err > 0) { + char *buf_err = (char *)malloc(sizeof(char) * (size_err + 1)); + lseek(err_fd, 0, SEEK_SET); + if (read(err_fd, buf_err, size_err) >= 0) { + buf_err[size_err] = '\0'; + op->stderr_data = buf_err; + } + } else { + op->stderr_data = NULL; + } + + if (close(out_fd) < 0) { + crm_info("Error '%s'", "a"); + } + if (close(err_fd) < 0) { + crm_info("Error 's'", "b"); + } + + op->rc = exec_status; + op->status = PCMK_EXEC_DONE; + op->pid = 0; + if (op->opaque->callback) { + op->opaque->callback(op); + } + } + dlclose(handle); + return exec_status; + //dlclose(handle); + } + + dlclose(handle); + } + + { int stdout_fd[2]; int stderr_fd[2]; int stdin_fd[2] = {-1, -1}; @@ -1227,42 +1315,6 @@ services__execute_file(svc_action_t *op) goto done; } - { - - void *handle; - int (*exec)(svc_action_t *op); - char *lib_error; - int exec_status; - handle = dlopen (op->agent, RTLD_LAZY); - - if (!handle) { - crm_info("Cannot execute shared library"); - } else { - exec = dlsym(handle, op->action); - - if ((lib_error = dlerror()) != NULL){ - free(lib_error); - - crm_info("Shared library doesnot contain method"); - } else { - exec_status = exec(op); - - if (exec_status) { - close_pipe(stdin_fd); - close_pipe(stdout_fd); - close_pipe(stderr_fd); - sigchld_cleanup(&data); - - return pcmk_rc_ok; - } - - crm_info("Cannot execute resource with shared library"); - } - } - // dlclose(handle); - - } - op->pid = fork(); switch (op->pid) { case -1: @@ -1385,7 +1437,7 @@ services__execute_file(svc_action_t *op) &stderr_callbacks); services_add_inflight_op(op); return pcmk_rc_ok; - + } done: if (op->synchronous) { return (op->rc == PCMK_OCF_OK)? pcmk_rc_ok : pcmk_rc_error; From 25388cfec0a06dd1fbd134a1925fef5a64887f41 Mon Sep 17 00:00:00 2001 From: semtagg Date: Thu, 1 Dec 2022 22:14:22 +0300 Subject: [PATCH 09/48] wip --- lib/libagent/libtest.c | 31 ++++++++++++++++++++++++++++--- lib/services/services_linux.c | 8 ++++---- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/lib/libagent/libtest.c b/lib/libagent/libtest.c index 5d080a2bff6..533db91f489 100644 --- a/lib/libagent/libtest.c +++ b/lib/libagent/libtest.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #define OCF_SUCCESS 0 @@ -20,16 +21,23 @@ static const char STATUS_CMD[] = "status"; static const char MONITOR_CMD[] = "monitor"; static const char META_DATA_CMD[] = "meta-data"; +static const char DISABLE[] = "one"; +static const char ENABLE[] = "two"; + const char my_interp[] __attribute__((section(".interp"))) = "/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2"; int start(void) { static const char mes[] = "Hello from 'Start action' test agent.\n"; int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + int fd_check = open("/var/log/check.log", O_WRONLY); write(fd, mes, sizeof(mes)); - close(fd); + lseek(fd_check, 0, SEEK_SET); + write(fd_check, DISABLE, sizeof(DISABLE)); + close(fd); + close(fd_check); return OCF_SUCCESS; } @@ -37,10 +45,14 @@ int stop(void) { static const char mes[] = "Hello from 'Stop action' test agent.\n"; int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + int fd_check = open("/var/log/check.log", O_WRONLY); write(fd, mes, sizeof(mes)); - close(fd); + lseek(fd_check, 0, SEEK_SET); + write(fd_check, ENABLE, sizeof(ENABLE)); + close(fd); + close(fd_check); return OCF_SUCCESS; } @@ -60,11 +72,24 @@ monitor(void) { static const char mes[] = "Hello from 'Monitor action' test agent.\n"; //int fd = open("/var/log/test.log", O_WRONLY | O_APPEND | O_CREAT, 0666); int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); + int fd_check = open("/var/log/check.log", O_RDONLY); + char buf_check[4]; write(fd, mes, sizeof(mes)); + if (read(fd_check, buf_check, 3) >= 0) { + buf_check[3] = '\0'; + } + close(fd); + close(fd_check); - return OCF_SUCCESS; + if (strcmp(buf_check, ENABLE) == 0) { + return OCF_SUCCESS; + } else if (strcmp(buf_check, DISABLE) == 0) { + return OCF_NOT_RUNNING; + } + + return -1; } int diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index dcd11ace59b..23f87aa8d12 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1176,7 +1176,7 @@ services__execute_file(svc_action_t *op) int (*exec)(int, int, char *); char *lib_error; int exec_status; - char dst[1024] = "/usr/lib/ocf/resource.d/heartbeat/"; + char dst[200] = "/usr/lib/ocf/resource.d/heartbeat/"; strcat(dst, op->agent); handle = dlopen (dst, RTLD_NOW | RTLD_LOCAL); @@ -1198,8 +1198,8 @@ services__execute_file(svc_action_t *op) char num[10]; int out_fd; int err_fd; - char out_file_name[1024] = "outfd-"; - char err_file_name[1024] = "errfd-"; + char out_file_name[100] = "outfd-"; + char err_file_name[100] = "errfd-"; sprintf(num, "%d", getpid()); strcat(out_file_name, num); strcat(err_file_name, num); @@ -1248,7 +1248,7 @@ services__execute_file(svc_action_t *op) } } dlclose(handle); - return exec_status; + return pcmk_rc_ok; //dlclose(handle); } From 1934103aacb7edefe50888673cbdba29c5c3a139 Mon Sep 17 00:00:00 2001 From: semtagg Date: Sun, 4 Dec 2022 21:10:07 +0300 Subject: [PATCH 10/48] fixed recurring monitor action --- daemons/execd/execd_commands.c | 1 + lib/services/services_linux.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 096e9d53659..cef42a68941 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -1389,6 +1389,7 @@ execute_resource_action(gpointer user_data) rsc->active = cmd; /* only one op at a time for a rsc */ if (cmd->interval_ms) { + crm_info("execute_resource_action '%s'", cmd->action); rsc->recurring_ops = g_list_append(rsc->recurring_ops, cmd); } diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 23f87aa8d12..f9bb1ac2c0c 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1243,6 +1243,17 @@ services__execute_file(svc_action_t *op) op->rc = exec_status; op->status = PCMK_EXEC_DONE; op->pid = 0; + if (op->interval_ms != 0) { + // Recurring operations must be either cancelled or rescheduled + if (op->cancel) { + services__set_cancelled(op); + cancel_recurring_action(op); + } else { + op->opaque->repeat_timer = g_timeout_add(op->interval_ms, + recurring_action_timer, + (void *) op); + } + } if (op->opaque->callback) { op->opaque->callback(op); } From 650fcc3c7db91a98a84902c0c175b3dfccabad84 Mon Sep 17 00:00:00 2001 From: semtagg Date: Sun, 4 Dec 2022 21:36:30 +0300 Subject: [PATCH 11/48] removed test agent from main repo --- lib/libagent/libtest.c | 306 ---------------------------------------- lib/libagent/libtest.so | Bin 25200 -> 0 bytes 2 files changed, 306 deletions(-) delete mode 100644 lib/libagent/libtest.c delete mode 100755 lib/libagent/libtest.so diff --git a/lib/libagent/libtest.c b/lib/libagent/libtest.c deleted file mode 100644 index 533db91f489..00000000000 --- a/lib/libagent/libtest.c +++ /dev/null @@ -1,306 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#define OCF_SUCCESS 0 -#define OCF_ERR_GENERIC 1 -#define OCF_ERR_ARGS 2 -#define OCF_ERR_UNIMPLEMENTED 3 -#define OCF_ERR_PERM 4 -#define OCF_ERR_INSTALLED 5 -#define OCF_ERR_CONFIGURED 6 -#define OCF_NOT_RUNNING 7 - -static const char START_CMD[] = "start"; -static const char STOP_CMD[] = "stop"; -static const char STATUS_CMD[] = "status"; -static const char MONITOR_CMD[] = "monitor"; -static const char META_DATA_CMD[] = "meta-data"; - -static const char DISABLE[] = "one"; -static const char ENABLE[] = "two"; - -const char my_interp[] __attribute__((section(".interp"))) = "/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2"; - -int -start(void) { - static const char mes[] = "Hello from 'Start action' test agent.\n"; - int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); - int fd_check = open("/var/log/check.log", O_WRONLY); - - write(fd, mes, sizeof(mes)); - lseek(fd_check, 0, SEEK_SET); - write(fd_check, DISABLE, sizeof(DISABLE)); - - close(fd); - close(fd_check); - return OCF_SUCCESS; -} - -int -stop(void) { - static const char mes[] = "Hello from 'Stop action' test agent.\n"; - int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); - int fd_check = open("/var/log/check.log", O_WRONLY); - - write(fd, mes, sizeof(mes)); - lseek(fd_check, 0, SEEK_SET); - write(fd_check, ENABLE, sizeof(ENABLE)); - - close(fd); - close(fd_check); - return OCF_SUCCESS; -} - -int -status(void) { - static const char mes[] = "Hello from 'Status action' test agent.\n"; - int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); - - write(fd, mes, sizeof(mes)); - close(fd); - - return OCF_SUCCESS; -} - -int -monitor(void) { - static const char mes[] = "Hello from 'Monitor action' test agent.\n"; - //int fd = open("/var/log/test.log", O_WRONLY | O_APPEND | O_CREAT, 0666); - int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); - int fd_check = open("/var/log/check.log", O_RDONLY); - char buf_check[4]; - - write(fd, mes, sizeof(mes)); - if (read(fd_check, buf_check, 3) >= 0) { - buf_check[3] = '\0'; - } - - close(fd); - close(fd_check); - - if (strcmp(buf_check, ENABLE) == 0) { - return OCF_SUCCESS; - } else if (strcmp(buf_check, DISABLE) == 0) { - return OCF_NOT_RUNNING; - } - - return -1; -} - -int -metadata(int stdout, int stderr) { - static const char mes[] = "Hello from 'Metadata action' test agent.\n"; - int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); - - write(fd, mes, sizeof(mes)); - close(fd); - - static const char meta_data[]= - "\n" - "\n" - "\n" - " 1.0\n" - " \n" - " This script is used to write data to a file.\n" - " \n" - " Test agent\n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - "\n"; - - write(stdout, meta_data, sizeof(meta_data)); - return OCF_SUCCESS; -} - -int -handler(int out_fd, int err_fd, char *action) { - int ret = 0; - if (strcmp(action, START_CMD) == 0){ - ret = start(); - } else if (strcmp(action, STOP_CMD) == 0) { - ret = stop(); - } else if (strcmp(action, STATUS_CMD) == 0) { - ret = status(); - } else if (strcmp(action, MONITOR_CMD) == 0) { - ret = monitor(); - } else if (strcmp(action, META_DATA_CMD) == 0) { - ret = metadata(out_fd, err_fd); - } - - return ret; -} - -int -mmain() { - // return code - int ret = 0; - // is used to get parameters - char *stack_address = __builtin_frame_address(0); - // skip 24 bytes: ret address, argc, exec name - char **argv = stack_address + 0x18; - // parse action - if (strcmp(*argv, START_CMD) == 0){ - ret = start(); - } else if (strcmp(*argv, STOP_CMD) == 0) { - ret = stop(); - } else if (strcmp(*argv, STATUS_CMD) == 0) { - ret = status(); - } else if (strcmp(*argv, MONITOR_CMD) == 0) { - ret = monitor(); - } else if (strcmp(*argv, META_DATA_CMD) == 0) { - ret = metadata(1, 2); - } - - _exit(ret); -} - -// #include -// #include -// #include -// #include -// #include -// #include - -// #define OCF_SUCCESS 0 -// #define OCF_ERR_GENERIC 1 -// #define OCF_ERR_ARGS 2 -// #define OCF_ERR_UNIMPLEMENTED 3 -// #define OCF_ERR_PERM 4 -// #define OCF_ERR_INSTALLED 5 -// #define OCF_ERR_CONFIGURED 6 -// #define OCF_NOT_RUNNING 7 - -// static const char START_CMD[] = "start"; -// static const char STOP_CMD[] = "stop"; -// static const char STATUS_CMD[] = "status"; -// static const char MONITOR_CMD[] = "monitor"; -// static const char META_DATA_CMD[] = "meta-data"; - -// const char my_interp[] __attribute__((section(".interp"))) = "/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2"; - - -// int -// start(void) { -// static const char mes[] = "Hello from 'Start action' test agent.\n"; -// int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); - -// write(fd, mes, sizeof(mes)); -// close(fd); - -// return OCF_SUCCESS; -// } - -// int -// stop(void) { -// static const char mes[] = "Hello from 'Stop action' test agent.\n"; -// int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); - -// write(fd, mes, sizeof(mes)); -// close(fd); - -// return OCF_SUCCESS; -// } - -// int -// status(void) { -// static const char mes[] = "Hello from 'Status action' test agent.\n"; -// int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); - -// write(fd, mes, sizeof(mes)); -// close(fd); - -// return OCF_SUCCESS; -// } - -// int -// monitor(void) { -// static const char mes[] = "Hello from 'Monitor action' test agent.\n"; -// // int fd = open("/var/log/test.log", O_WRONLY | O_APPEND | O_CREAT, 0666); -// int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); -// write(fd, mes, sizeof(mes)); -// close(fd); - -// return OCF_SUCCESS; -// } - -// int -// metadata(int stdout, int stderr) { -// static const char mes[] = "Hello from 'Meta-data action' test agent.\n"; -// int fd = open("/var/log/test.log", O_WRONLY | O_APPEND); - -// write(fd, mes, sizeof(mes)); -// close(fd); - -// static const char meta_data[]= -// "\n" -// "\n" -// "\n" -// " 1.0\n" -// " \n" -// " This script is used to write data to a file.\n" -// " \n" -// " Test agent\n" -// " \n" -// " \n" -// " \n" -// " \n" -// " \n" -// " \n" -// "\n"; - -// write(stdout, meta_data, sizeof(meta_data)); -// return OCF_SUCCESS; -// } - - -// int -// handler(int out_fd, int err_fd, char *action) { -// int ret = 0; -// if (strcmp(action, START_CMD) == 0){ -// ret = start(); -// } else if (strcmp(action, STOP_CMD) == 0) { -// ret = stop(); -// } else if (strcmp(action, STATUS_CMD) == 0) { -// ret = status(); -// } else if (strcmp(action, MONITOR_CMD) == 0) { -// ret = monitor(); -// } else if (strcmp(action, META_DATA_CMD) == 0) { -// ret = metadata(out_fd, err_fd); -// } - -// return ret; -// } - -// int -// mmain() { -// // return code -// int ret = 0; -// // is used to get parameters -// char *stack_address = __builtin_frame_address(0); -// // skip 24 bytes: ret address, argc, exec name -// char **argv = stack_address + 0x18; -// // parse action -// if (strcmp(*argv, START_CMD) == 0){ -// ret = start(); -// } else if (strcmp(*argv, STOP_CMD) == 0) { -// ret = stop(); -// } else if (strcmp(*argv, STATUS_CMD) == 0) { -// ret = status(); -// } else if (strcmp(*argv, MONITOR_CMD) == 0) { -// ret = monitor(); -// } else if (strcmp(*argv, META_DATA_CMD) == 0) { -// ret = metadata(1, 2); -// } - -// _exit(ret); -// } \ No newline at end of file diff --git a/lib/libagent/libtest.so b/lib/libagent/libtest.so deleted file mode 100755 index 04ddf3287d4a3866cd0883cd3f50d0b12f6126e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25200 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 Date: Sun, 4 Dec 2022 22:37:37 +0300 Subject: [PATCH 12/48] some code cleanup & moved agent to another repo --- lib/services/services_linux.c | 197 ++++++++++++++++---------------- lib/services/services_private.h | 3 + 2 files changed, 104 insertions(+), 96 deletions(-) diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index f9bb1ac2c0c..2ad0b07e6ae 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1172,101 +1172,6 @@ wait_for_sync_result(svc_action_t *op, struct sigchld_data_s *data) int services__execute_file(svc_action_t *op) { - void *handle; - int (*exec)(int, int, char *); - char *lib_error; - int exec_status; - char dst[200] = "/usr/lib/ocf/resource.d/heartbeat/"; - strcat(dst, op->agent); - handle = dlopen (dst, RTLD_NOW | RTLD_LOCAL); - - if (!handle) { - crm_info("1"); - crm_info("Cannot execute '%s'", op->action); - crm_info("Cannot execute '%s'", op->agent); - } else { - crm_info("2"); - crm_info("Execute action: '%s'", op->action); - crm_info("Execute synchro: '%d'", op->synchronous); - exec = dlsym(handle, "handler"); - - if ((lib_error = dlerror()) != NULL){ - free(lib_error); - - crm_info("Shared library doesnot contain method"); - } else { - char num[10]; - int out_fd; - int err_fd; - char out_file_name[100] = "outfd-"; - char err_file_name[100] = "errfd-"; - sprintf(num, "%d", getpid()); - strcat(out_file_name, num); - strcat(err_file_name, num); - - out_fd = memfd_create(out_file_name, MFD_ALLOW_SEALING); - err_fd = memfd_create(err_file_name, MFD_ALLOW_SEALING); - - exec_status = exec(out_fd, err_fd, op->action); - { - int size_out = lseek(out_fd, 0, SEEK_END); // SEEK_CUR ? - int size_err = lseek(err_fd, 0, SEEK_END); - if (size_out > 0) { - char *buf_out = (char *)malloc(sizeof(char) * (size_out + 1)); - lseek(out_fd, 0, SEEK_SET); - if (read(out_fd, buf_out, size_out) >= 0) { - buf_out[size_out] = '\0'; - op->stdout_data = buf_out; - } - } else { - op->stdout_data = NULL; - } - - if (size_err > 0) { - char *buf_err = (char *)malloc(sizeof(char) * (size_err + 1)); - lseek(err_fd, 0, SEEK_SET); - if (read(err_fd, buf_err, size_err) >= 0) { - buf_err[size_err] = '\0'; - op->stderr_data = buf_err; - } - } else { - op->stderr_data = NULL; - } - - if (close(out_fd) < 0) { - crm_info("Error '%s'", "a"); - } - if (close(err_fd) < 0) { - crm_info("Error 's'", "b"); - } - - op->rc = exec_status; - op->status = PCMK_EXEC_DONE; - op->pid = 0; - if (op->interval_ms != 0) { - // Recurring operations must be either cancelled or rescheduled - if (op->cancel) { - services__set_cancelled(op); - cancel_recurring_action(op); - } else { - op->opaque->repeat_timer = g_timeout_add(op->interval_ms, - recurring_action_timer, - (void *) op); - } - } - if (op->opaque->callback) { - op->opaque->callback(op); - } - } - dlclose(handle); - return pcmk_rc_ok; - //dlclose(handle); - } - - dlclose(handle); - } - - { int stdout_fd[2]; int stderr_fd[2]; int stdin_fd[2] = {-1, -1}; @@ -1274,6 +1179,10 @@ services__execute_file(svc_action_t *op) struct stat st; struct sigchld_data_s data; + if (services__execute_file_as_plugin(op) == pcmk_rc_ok){ + return pcmk_rc_ok; + } + // Catch common failure conditions early if (stat(op->opaque->exec, &st) != 0) { rc = errno; @@ -1448,7 +1357,6 @@ services__execute_file(svc_action_t *op) &stderr_callbacks); services_add_inflight_op(op); return pcmk_rc_ok; - } done: if (op->synchronous) { return (op->rc == PCMK_OCF_OK)? pcmk_rc_ok : pcmk_rc_error; @@ -1536,3 +1444,100 @@ services_os_get_directory_list(const char *root, gboolean files, gboolean execut return result; } + +int +services__execute_file_as_plugin(svc_action_t *op) { + void *handle; + int (*exec)(int, int, char *); + char *lib_error; + int exec_status; + char dst[200] = "/usr/lib/ocf/resource.d/heartbeat/"; + strcat(dst, op->agent); + handle = dlopen (dst, RTLD_NOW | RTLD_LOCAL); + + if (!handle) { + crm_info("1"); + crm_info("Cannot execute '%s'", op->action); + crm_info("Cannot execute '%s'", op->agent); + return pcmk_rc_error; + } else { + crm_info("2"); + crm_info("Execute action: '%s'", op->action); + crm_info("Execute synchro: '%d'", op->synchronous); + exec = dlsym(handle, "handler"); + + if ((lib_error = dlerror()) != NULL){ + free(lib_error); + + crm_info("Shared library doesnot contain method"); + return pcmk_rc_error; + } else { + char num[10]; + int out_fd; + int err_fd; + char out_file_name[100] = "outfd-"; + char err_file_name[100] = "errfd-"; + sprintf(num, "%d", getpid()); + strcat(out_file_name, num); + strcat(err_file_name, num); + + out_fd = memfd_create(out_file_name, MFD_ALLOW_SEALING); + err_fd = memfd_create(err_file_name, MFD_ALLOW_SEALING); + + exec_status = exec(out_fd, err_fd, op->action); + { + int size_out = lseek(out_fd, 0, SEEK_END); // SEEK_CUR ? + int size_err = lseek(err_fd, 0, SEEK_END); + if (size_out > 0) { + char *buf_out = (char *)malloc(sizeof(char) * (size_out + 1)); + lseek(out_fd, 0, SEEK_SET); + if (read(out_fd, buf_out, size_out) >= 0) { + buf_out[size_out] = '\0'; + op->stdout_data = buf_out; + } + } else { + op->stdout_data = NULL; + } + + if (size_err > 0) { + char *buf_err = (char *)malloc(sizeof(char) * (size_err + 1)); + lseek(err_fd, 0, SEEK_SET); + if (read(err_fd, buf_err, size_err) >= 0) { + buf_err[size_err] = '\0'; + op->stderr_data = buf_err; + } + } else { + op->stderr_data = NULL; + } + + if (close(out_fd) < 0) { + crm_info("Error '%s'", "a"); + } + if (close(err_fd) < 0) { + crm_info("Error 's'", "b"); + } + + op->rc = exec_status; + op->status = PCMK_EXEC_DONE; + op->pid = 0; + if (op->interval_ms != 0) { + // Recurring operations must be either cancelled or rescheduled + if (op->cancel) { + services__set_cancelled(op); + cancel_recurring_action(op); + } else { + op->opaque->repeat_timer = g_timeout_add(op->interval_ms, + recurring_action_timer, + (void *) op); + } + } + if (op->opaque->callback) { + op->opaque->callback(op); + } + } + dlclose(handle); + return pcmk_rc_ok; + //dlclose(handle); + } + } +} diff --git a/lib/services/services_private.h b/lib/services/services_private.h index 7285fc33f83..2b95ba09c94 100644 --- a/lib/services/services_private.h +++ b/lib/services/services_private.h @@ -57,6 +57,9 @@ GList *services_os_get_directory_list(const char *root, gboolean files, gboolean G_GNUC_INTERNAL int services__execute_file(svc_action_t *op); +G_GNUC_INTERNAL +int services__execute_file_as_plugin(svc_action_t *op); + G_GNUC_INTERNAL gboolean cancel_recurring_action(svc_action_t * op); From c5ecab892ddf13c22f75d93deaebb5d94f3461c6 Mon Sep 17 00:00:00 2001 From: semtagg Date: Sun, 4 Dec 2022 22:46:18 +0300 Subject: [PATCH 13/48] wip --- .vscode/settings.json | 5 ----- daemons/execd/execd_commands.c | 1 - lib/services/services_linux.c | 13 ++++++------- 3 files changed, 6 insertions(+), 13 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 6d40f422fd5..00000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "files.associations": { - "resource.h": "c" - } -} \ No newline at end of file diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index cef42a68941..096e9d53659 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -1389,7 +1389,6 @@ execute_resource_action(gpointer user_data) rsc->active = cmd; /* only one op at a time for a rsc */ if (cmd->interval_ms) { - crm_info("execute_resource_action '%s'", cmd->action); rsc->recurring_ops = g_list_append(rsc->recurring_ops, cmd); } diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 2ad0b07e6ae..36307a3dbad 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1456,20 +1456,19 @@ services__execute_file_as_plugin(svc_action_t *op) { handle = dlopen (dst, RTLD_NOW | RTLD_LOCAL); if (!handle) { - crm_info("1"); - crm_info("Cannot execute '%s'", op->action); - crm_info("Cannot execute '%s'", op->agent); + // можно что-то залогировать return pcmk_rc_error; } else { - crm_info("2"); - crm_info("Execute action: '%s'", op->action); - crm_info("Execute synchro: '%d'", op->synchronous); + // можно что-то залогировать exec = dlsym(handle, "handler"); if ((lib_error = dlerror()) != NULL){ free(lib_error); - crm_info("Shared library doesnot contain method"); + // можно что-то залогировать + // ситуация, когда мы смогли открыть агента + // как разделяемую библиотеку, но не нашли + // нужного метода (что-то странное) return pcmk_rc_error; } else { char num[10]; From b14d3caac92b0f2678af75a4f6fec24cb1139940 Mon Sep 17 00:00:00 2001 From: semtagg Date: Thu, 8 Dec 2022 14:40:20 +0300 Subject: [PATCH 14/48] fixed environment variable --- conf5rsWZM/defines.awk | 191 +++++++++++++++++++ conf5rsWZM/subs.awk | 346 ++++++++++++++++++++++++++++++++++ conf5rsWZM/subs1.awk | 346 ++++++++++++++++++++++++++++++++++ lib/services/services_linux.c | 3 + 4 files changed, 886 insertions(+) create mode 100644 conf5rsWZM/defines.awk create mode 100644 conf5rsWZM/subs.awk create mode 100644 conf5rsWZM/subs1.awk diff --git a/conf5rsWZM/defines.awk b/conf5rsWZM/defines.awk new file mode 100644 index 00000000000..a611064a169 --- /dev/null +++ b/conf5rsWZM/defines.awk @@ -0,0 +1,191 @@ +BEGIN { +D["PACKAGE_NAME"]=" \"pacemaker\"" +D["PACKAGE_TARNAME"]=" \"pacemaker\"" +D["PACKAGE_VERSION"]=" \"2.1.4\"" +D["PACKAGE_STRING"]=" \"pacemaker 2.1.4\"" +D["PACKAGE_BUGREPORT"]=" \"users@clusterlabs.org\"" +D["PACKAGE_URL"]=" \"https://ClusterLabs.org/pacemaker/\"" +D["PACKAGE"]=" \"pacemaker\"" +D["VERSION"]=" \"2.1.4\"" +D["ENABLE_VERSIONED_ATTRS"]=" 0" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["restrict"]=" __restrict" +D["HAVE_BYTESWAP_H"]=" 1" +D["HAVE_DLFCN_H"]=" 1" +D["LT_OBJDIR"]=" \".libs/\"" +D["LT_MODULE_EXT"]=" \".so\"" +D["LT_MODULE_PATH_VAR"]=" \"LD_LIBRARY_PATH\"" +D["LT_DLSEARCH_PATH"]=" \"/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-"\ +"gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/"\ +"usr/lib/x86_64-linux-gnu\"" +D["HAVE_LIBDL"]=" 1" +D["HAVE_DLERROR"]=" 1" +D["HAVE_LIBDLLOADER"]=" 1" +D["HAVE_ARGZ_H"]=" 1" +D["HAVE_ERROR_T"]=" 1" +D["HAVE_ARGZ_ADD"]=" 1" +D["HAVE_ARGZ_APPEND"]=" 1" +D["HAVE_ARGZ_COUNT"]=" 1" +D["HAVE_ARGZ_CREATE_SEP"]=" 1" +D["HAVE_ARGZ_INSERT"]=" 1" +D["HAVE_ARGZ_NEXT"]=" 1" +D["HAVE_ARGZ_STRINGIFY"]=" 1" +D["HAVE_WORKING_ARGZ"]=" 1" +D["HAVE_PRELOADED_SYMBOLS"]=" 1" +D["HAVE_LTDL"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_DIRENT_H"]=" 1" +D["HAVE_CLOSEDIR"]=" 1" +D["HAVE_OPENDIR"]=" 1" +D["HAVE_READDIR"]=" 1" +D["LT_LIBEXT"]=" \"a\"" +D["LT_LIBPREFIX"]=" \"lib\"" +D["SIZEOF_CHAR"]=" 1" +D["SIZEOF_SHORT"]=" 2" +D["SIZEOF_INT"]=" 4" +D["SIZEOF_LONG"]=" 8" +D["SIZEOF_LONG_LONG"]=" 8" +D["PCMK__CONCURRENT_FENCING_DEFAULT"]=" \"false\"" +D["PCMK__SBD_SYNC_DEFAULT"]=" false" +D["PCMK__RESOURCE_STICKINESS_DEFAULT"]=" 0" +D["OCF_ROOT_DIR"]=" \"/usr/lib/ocf\"" +D["PACEMAKER_VERSION"]=" \"2.1.4\"" +D["PCMK__LOCALE_DIR"]=" \"/usr/share/locale\"" +D["PCMK_RUN_DIR"]=" \"/var/run\"" +D["PCMK__LSB_INIT_DIR"]=" \"/etc/init.d\"" +D["CRM_LOG_DIR"]=" \"/var/log/pacemaker\"" +D["CRM_BUNDLE_DIR"]=" \"/var/log/pacemaker/bundles\"" +D["PCMK__FENCE_BINDIR"]=" \"/usr/sbin\"" +D["OCF_RA_PATH"]=" \"/usr/lib/ocf/resource.d\"" +D["PCMK_GNUTLS_PRIORITIES"]=" \"NORMAL\"" +D["US_AUTH_PEERCRED_UCRED"]=" 1" +D["SUPPORT_PROCFS"]=" 1" +D["HAVE_DECL_PRIU64"]=" 1" +D["HAVE_DECL_PRIU32"]=" 1" +D["HAVE_DECL_PRIX32"]=" 1" +D["HAVE_DECL_SCNU64"]=" 1" +D["U64T"]=" PRIu64" +D["U32T"]=" PRIu32" +D["X32T"]=" PRIx32" +D["U64TS"]=" SCNu64" +D["VALGRIND_BIN"]=" \"/usr/bin/valgrind\"" +D["HAVE_ALPHASORT"]=" 1" +D["HAVE_SCANDIR"]=" 1" +D["HAVE_STRERROR"]=" 1" +D["HAVE_STRCHRNUL"]=" 1" +D["HAVE_STRNLEN"]=" 1" +D["HAVE_STRNDUP"]=" 1" +D["HAVE_LIBDL"]=" 1" +D["HAVE_LIBRT"]=" 1" +D["HAVE_SCHED_SETSCHEDULER"]=" 1" +D["HAVE_NANOSLEEP"]=" 1" +D["HAVE_USLEEP"]=" 1" +D["HAVE_LIBXSLT"]=" 1" +D["HAVE_GETOPT_H"]=" 1" +D["HAVE_LINUX_SWAB_H"]=" 1" +D["HAVE_STDDEF_H"]=" 1" +D["HAVE_SYS_SIGNALFD_H"]=" 1" +D["HAVE_UUID_UUID_H"]=" 1" +D["HAVE_ARPA_INET_H"]=" 1" +D["HAVE_CTYPE_H"]=" 1" +D["HAVE_DIRENT_H"]=" 1" +D["HAVE_ERRNO_H"]=" 1" +D["HAVE_GLIB_H"]=" 1" +D["HAVE_GRP_H"]=" 1" +D["HAVE_LIMITS_H"]=" 1" +D["HAVE_NETDB_H"]=" 1" +D["HAVE_NETINET_IN_H"]=" 1" +D["HAVE_NETINET_IP_H"]=" 1" +D["HAVE_PWD_H"]=" 1" +D["HAVE_SIGNAL_H"]=" 1" +D["HAVE_STDIO_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_SYS_IOCTL_H"]=" 1" +D["HAVE_SYS_PARAM_H"]=" 1" +D["HAVE_SYS_REBOOT_H"]=" 1" +D["HAVE_SYS_RESOURCE_H"]=" 1" +D["HAVE_SYS_SOCKET_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_SYS_TIME_H"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_UTSNAME_H"]=" 1" +D["HAVE_SYS_WAIT_H"]=" 1" +D["HAVE_TIME_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_LIBXML_XPATH_H"]=" 1" +D["HAVE_LIBXSLT_XSLT_H"]=" 1" +D["HAVE_UUID_UNPARSE"]=" 1" +D["HAVE_DECL_CLOCK_MONOTONIC"]=" 1" +D["HAVE_DECL_ASSERT_FLOAT_EQUAL"]=" 0" +D["HAVE_STRUCT_TM_TM_GMTOFF"]=" 1" +D["HAVE_STRUCT_DIRENT_D_TYPE"]=" 1" +D["SSCANF_HAS_M"]=" 1" +D["HAVE_BZLIB_H"]=" 1" +D["HAVE_LIBBZ2"]=" 1" +D["SUPPORT_PROFILING"]=" 0" +D["CRM_SCHEMA_DIRECTORY"]=" \"/usr/share/pacemaker\"" +D["CRM_CORE_DIR"]=" \"/var/lib/pacemaker/cores\"" +D["CRM_DAEMON_USER"]=" \"hacluster\"" +D["CRM_DAEMON_GROUP"]=" \"haclient\"" +D["CRM_PACEMAKER_DIR"]=" \"/var/lib/pacemaker\"" +D["CRM_BLACKBOX_DIR"]=" \"/var/lib/pacemaker/blackbox\"" +D["PE_STATE_DIR"]=" \"/var/lib/pacemaker/pengine\"" +D["CRM_CONFIG_DIR"]=" \"/var/lib/pacemaker/cib\"" +D["CRM_DAEMON_DIR"]=" \"/usr/libexec/pacemaker\"" +D["CRM_STATE_DIR"]=" \"/var/run/crm\"" +D["CRM_RSCTMP_DIR"]=" \"/var/run/resource-agents\"" +D["PACEMAKER_CONFIG_DIR"]=" \"/etc/pacemaker\"" +D["SBIN_DIR"]=" \"/usr/sbin\"" +D["BUILD_VERSION"]=" \"c5ecab892\"" +D["SUPPORT_DBUS"]=" 0" +D["SUPPORT_SYSTEMD"]=" 0" +D["SUPPORT_UPSTART"]=" 0" +D["SUPPORT_NAGIOS"]=" 1" +D["NAGIOS_PLUGIN_DIR"]=" \"/usr/libexec/nagios/plugins\"" +D["NAGIOS_METADATA_DIR"]=" \"/usr/share/nagios/plugins-metadata\"" +D["SUPPORT_COROSYNC"]=" 1" +D["SUPPORT_CIBSECRETS"]=" 0" +D["GCC_FORMAT_NONLITERAL_CHECKING_ENABLED"]=" /**/" +D["CRM_FEATURES"]=" \"corosync-ge-2 monotonic nagios\"" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } diff --git a/conf5rsWZM/subs.awk b/conf5rsWZM/subs.awk new file mode 100644 index 00000000000..ee68bcbdf0f --- /dev/null +++ b/conf5rsWZM/subs.awk @@ -0,0 +1,346 @@ +BEGIN { +S["ltdl_LTLIBOBJS"]=" lt__strl.lo" +S["ltdl_LIBOBJS"]=" lt__strl.o" +S["gltests_LTLIBOBJS"]="" +S["gltests_LIBOBJS"]="" +S["gl_LTLIBOBJS"]="" +S["gl_LIBOBJS"]="" +S["am__EXEEXT_FALSE"]="" +S["am__EXEEXT_TRUE"]="#" +S["LTLIBOBJS"]=" ${LIBOBJDIR}NoSuchFunctionName$U.lo" +S["QUIET_LIBTOOL_OPTS"]="" +S["MAKEFLAGS"]=" " +S["PCMK_FEATURES"]="corosync-ge-2 monotonic nagios" +S["LOCALE"]="" +S["CFLAGS_COPY"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ +"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ +"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection -Werror" +S["NON_FATAL_CFLAGS"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ +"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ +"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection" +S["BUILD_OPENIPMI_SERVICELOG_FALSE"]="" +S["BUILD_OPENIPMI_SERVICELOG_TRUE"]="#" +S["OPENIPMI_SERVICELOG_LIBS"]="" +S["OPENIPMI_SERVICELOG_CFLAGS"]="" +S["BUILD_SERVICELOG_FALSE"]="" +S["BUILD_SERVICELOG_TRUE"]="#" +S["SERVICELOG_LIBS"]="" +S["SERVICELOG_CFLAGS"]="" +S["BUILD_REMOTE_FALSE"]="" +S["BUILD_REMOTE_TRUE"]="#" +S["PC_NAME_GNUTLS"]="" +S["BUILD_CIBSECRETS_FALSE"]="" +S["BUILD_CIBSECRETS_TRUE"]="#" +S["LRM_CIBSECRETS_DIR"]="" +S["PC_NAME_CLUSTER"]=" libcfg libcmap libcorosync_common libcpg libquorum" +S["CLUSTERLIBS"]=" -lcpg -lqb -ldl -lcfg -lqb -ldl -lcmap -lqb -ldl -lquorum -lqb -ldl -lcorosync_common -lqb -ldl" +S["SUPPORT_COROSYNC"]="" +S["BUILD_CS_SUPPORT_FALSE"]="#" +S["BUILD_CS_SUPPORT_TRUE"]="" +S["libcorosync_common_LIBS"]="-lcorosync_common -lqb -ldl" +S["libcorosync_common_CFLAGS"]="" +S["quorum_LIBS"]="-lquorum -lqb -ldl" +S["quorum_CFLAGS"]="" +S["cmap_LIBS"]="-lcmap -lqb -ldl" +S["cmap_CFLAGS"]="" +S["cfg_LIBS"]="-lcfg -lqb -ldl" +S["cfg_CFLAGS"]="" +S["cpg_LIBS"]="-lcpg -lqb -ldl" +S["cpg_CFLAGS"]="" +S["NAGIOS_METADATA_DIR"]="/usr/share/nagios/plugins-metadata" +S["NAGIOS_PLUGIN_DIR"]="/usr/libexec/nagios/plugins" +S["BUILD_NAGIOS_FALSE"]="#" +S["BUILD_NAGIOS_TRUE"]="" +S["SUPPORT_UPSTART"]="" +S["BUILD_UPSTART_FALSE"]="" +S["BUILD_UPSTART_TRUE"]="#" +S["SUPPORT_SYSTEMD"]="" +S["BUILD_SYSTEMD_FALSE"]="" +S["BUILD_SYSTEMD_TRUE"]="#" +S["PC_NAME_DBUS"]="" +S["BUILD_DBUS_FALSE"]="" +S["BUILD_DBUS_TRUE"]="#" +S["DBUS_LIBS"]="" +S["DBUS_CFLAGS"]="" +S["BUILD_VERSION"]="c5ecab892" +S["GIT"]="/usr/bin/git" +S["PACEMAKER_CONFIG_DIR"]="/etc/pacemaker" +S["CRM_RSCTMP_DIR"]="/var/run/resource-agents" +S["CRM_STATE_DIR"]="/var/run/crm" +S["CRM_DAEMON_DIR"]="/usr/libexec/pacemaker" +S["CRM_CONFIG_DIR"]="/var/lib/pacemaker/cib" +S["PE_STATE_DIR"]="/var/lib/pacemaker/pengine" +S["CRM_BLACKBOX_DIR"]="/var/lib/pacemaker/blackbox" +S["CRM_PACEMAKER_DIR"]="/var/lib/pacemaker" +S["CRM_DAEMON_GROUP"]="haclient" +S["CRM_DAEMON_USER"]="hacluster" +S["CRM_CORE_DIR"]="/var/lib/pacemaker/cores" +S["CRM_SCHEMA_DIRECTORY"]="/usr/share/pacemaker" +S["BUILD_LHA_SUPPORT_FALSE"]="" +S["BUILD_LHA_SUPPORT_TRUE"]="#" +S["libqb_LIBS"]="-lqb -ldl" +S["libqb_CFLAGS"]="" +S["BUILD_PROFILING_FALSE"]="" +S["BUILD_PROFILING_TRUE"]="#" +S["PC_LIBS_CURSES"]="" +S["PC_NAME_CURSES"]="" +S["CURSESLIBS"]="" +S["WRAPPABLE_UNAME_FALSE"]="#" +S["WRAPPABLE_UNAME_TRUE"]="" +S["LIBXML2_LIBS"]="-lxml2" +S["LIBXML2_CFLAGS"]="-I/usr/include/libxml2" +S["GLIB_LIBS"]="-lglib-2.0" +S["GLIB_CFLAGS"]="-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include" +S["PC_LIBS_RT"]="-lrt" +S["UUID_LIBS"]="-luuid" +S["UUID_CFLAGS"]="-I/usr/include/uuid" +S["LIBOBJS"]=" ${LIBOBJDIR}NoSuchFunctionName$U.o" +S["GETOPT_PATH"]="/usr/bin/getopt" +S["BUILD_SPHINX_DOCS_FALSE"]="" +S["BUILD_SPHINX_DOCS_TRUE"]="#" +S["BUILD_ASCIIDOC_FALSE"]="" +S["BUILD_ASCIIDOC_TRUE"]="#" +S["IS_ASCIIDOC_FALSE"]="" +S["IS_ASCIIDOC_TRUE"]="#" +S["BUILD_XML_HELP_FALSE"]="" +S["BUILD_XML_HELP_TRUE"]="#" +S["MANPAGE_XSLT"]="" +S["BUILD_HELP_FALSE"]="" +S["BUILD_HELP_TRUE"]="#" +S["VALGRIND_BIN"]="/usr/bin/valgrind" +S["BASH_PATH"]="/usr/bin/bash" +S["XMLCATALOG"]="" +S["XSLTPROC"]="/usr/bin/xsltproc" +S["INKSCAPE"]="" +S["SPHINX"]="" +S["HELP2MAN"]="" +S["ASCIIDOC_CONV"]="" +S["pkgpyexecdir"]="${pyexecdir}/pacemaker" +S["pyexecdir"]="${exec_prefix}/local/lib/python3.10/dist-packages" +S["pkgpythondir"]="${pythondir}/pacemaker" +S["pythondir"]="${prefix}/local/lib/python3.10/dist-packages" +S["PYTHON_PLATFORM"]="linux" +S["PYTHON_EXEC_PREFIX"]="${exec_prefix}" +S["PYTHON_PREFIX"]="${prefix}" +S["PYTHON_VERSION"]="3.1" +S["PYTHON"]="/usr/bin/python3" +S["INIT_EXT"]="" +S["BUG_URL"]="https://bugs.clusterlabs.org/enter_bug.cgi?product=Pacemaker" +S["CRM_BUNDLE_DIR"]="/var/log/pacemaker/bundles" +S["CRM_LOG_DIR"]="/var/log/pacemaker" +S["CONFIGDIR"]="/etc/sysconfig" +S["INITDIR"]="/etc/init.d" +S["PACKAGE_SERIES"]="2.1" +S["LDFLAGS_HARDENED_EXE"]=" -Wl,-z,relro -pie -Wl,-z,now -Wl,--as-needed" +S["CFLAGS_HARDENED_EXE"]=" -fPIE" +S["LDFLAGS_HARDENED_LIB"]=" -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" +S["CFLAGS_HARDENED_LIB"]="" +S["PCMK__FENCE_BINDIR"]="/usr/sbin" +S["FA_PREFIX"]="" +S["OCF_RA_INSTALL_DIR"]="/usr/lib/ocf/resource.d" +S["OCF_RA_PATH"]="/usr/lib/ocf/resource.d" +S["OCF_ROOT_DIR"]="/usr/lib/ocf" +S["PCMK__COROSYNC_CONF"]="/usr/etc/corosync/corosync.conf" +S["POSUB"]="" +S["LTLIBINTL"]="" +S["LIBINTL"]="" +S["INTLLIBS"]="" +S["LTLIBICONV"]="-liconv" +S["LIBICONV"]="-liconv" +S["INTL_MACOSX_LIBS"]="" +S["XGETTEXT_EXTRA_OPTIONS"]="" +S["MSGMERGE"]="/usr/bin/msgmerge" +S["XGETTEXT_015"]="/usr/bin/xgettext" +S["XGETTEXT"]="/usr/bin/xgettext" +S["GMSGFMT_015"]="/usr/bin/msgfmt" +S["MSGFMT_015"]="/usr/bin/msgfmt" +S["GMSGFMT"]="/usr/bin/msgfmt" +S["MSGFMT"]="/usr/bin/msgfmt" +S["GETTEXT_MACRO_VERSION"]="0.18" +S["USE_NLS"]="no" +S["BUILD_LEGACY_LINKS_FALSE"]="" +S["BUILD_LEGACY_LINKS_TRUE"]="#" +S["systemdsystemunitdir"]="" +S["LTDLOPEN"]="libltdl" +S["LT_CONFIG_H"]="include/config.h" +S["subdirs"]=" libltdl" +S["CONVENIENCE_LTDL_FALSE"]="#" +S["CONVENIENCE_LTDL_TRUE"]="" +S["INSTALL_LTDL_FALSE"]="" +S["INSTALL_LTDL_TRUE"]="#" +S["LT_ARGZ_H"]="" +S["sys_symbol_underscore"]="no" +S["LIBADD_DL"]="-ldl" +S["LT_DLPREOPEN"]="-dlpreopen libltdl/dlopen.la " +S["LIBADD_DLD_LINK"]="" +S["LIBADD_SHL_LOAD"]="" +S["LIBADD_DLOPEN"]="-ldl" +S["LT_DLLOADERS"]=" libltdl/dlopen.la" +S["INCLTDL"]="" +S["LTDLINCL"]="" +S["LTDLDEPS"]="" +S["LIBLTDL"]="-lltdl" +S["CXXCPP"]="g++ -E" +S["LT_SYS_LIBRARY_PATH"]="" +S["OTOOL64"]="" +S["OTOOL"]="" +S["LIPO"]="" +S["NMEDIT"]="" +S["DSYMUTIL"]="" +S["MANIFEST_TOOL"]=":" +S["ac_ct_AR"]="ar" +S["DLLTOOL"]="false" +S["OBJDUMP"]="objdump" +S["LN_S"]="ln -s" +S["NM"]="/usr/bin/nm -B" +S["ac_ct_DUMPBIN"]="" +S["DUMPBIN"]="" +S["LD"]="/usr/bin/ld -m elf_x86_64" +S["FGREP"]="/usr/bin/grep -F" +S["SED"]="/usr/bin/sed" +S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool --tag=CC $(QUIET_LIBTOOL_OPTS)" +S["AM_LDFLAGS"]="-Wl,--enable-new-dtags" +S["gltests_WITNESS"]="IN_PACEMAKER_GNULIB_TESTS" +S["GL_GENERATE_STDALIGN_H_FALSE"]="" +S["GL_GENERATE_STDALIGN_H_TRUE"]="#" +S["STDALIGN_H"]="" +S["LIB_CRYPTO"]="" +S["GL_GENERATE_BYTESWAP_H_FALSE"]="" +S["GL_GENERATE_BYTESWAP_H_TRUE"]="#" +S["BYTESWAP_H"]="" +S["GL_COND_LIBTOOL_FALSE"]="#" +S["GL_COND_LIBTOOL_TRUE"]="" +S["RANLIB"]="ranlib" +S["ARFLAGS"]="cr" +S["AR"]="ar" +S["EGREP"]="/usr/bin/grep -E" +S["GREP"]="/usr/bin/grep" +S["CPP"]="gcc -E" +S["am__fastdepCXX_FALSE"]="#" +S["am__fastdepCXX_TRUE"]="" +S["CXXDEPMODE"]="depmode=gcc3" +S["ac_ct_CXX"]="g++" +S["CXXFLAGS"]="-g -O2" +S["CXX"]="g++" +S["am__fastdepCC_FALSE"]="#" +S["am__fastdepCC_TRUE"]="" +S["CCDEPMODE"]="depmode=gcc3" +S["am__nodep"]="_no" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]=" -I/usr/include/uuid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libxml2 -I/usr/include/heartbeat " +S["LDFLAGS"]=" " +S["CFLAGS"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ +"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ +"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection -Werror" +S["CC"]="gcc" +S["noarch_pkgconfigdir"]="${datadir}/pkgconfig" +S["pkgconfigdir"]="${libdir}/pkgconfig" +S["PKG_CONFIG_LIBDIR"]="" +S["PKG_CONFIG_PATH"]="" +S["PKG_CONFIG"]="/usr/bin/pkg-config" +S["AM_BACKSLASH"]="\\" +S["AM_DEFAULT_VERBOSITY"]="1" +S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)" +S["AM_V"]="$(V)" +S["am__untar"]="tar -xf -" +S["am__tar"]="tar --format=ustar -chf - \"$$tardir\"" +S["AMTAR"]="$${TAR-tar}" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="gawk" +S["mkdir_p"]="/usr/bin/mkdir -p" +S["MKDIR_P"]="/usr/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="strip" +S["install_sh"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/install-sh" +S["MAKEINFO"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing makeinfo" +S["AUTOHEADER"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing autoheader" +S["AUTOMAKE"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing automake-1.16" +S["AUTOCONF"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing autoconf" +S["ACLOCAL"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing aclocal-1.16" +S["VERSION"]="2.1.4" +S["PACKAGE"]="pacemaker" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["host_os"]="linux-gnu" +S["host_vendor"]="pc" +S["host_cpu"]="x86_64" +S["host"]="x86_64-pc-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="pc" +S["build_cpu"]="x86_64" +S["build"]="x86_64-pc-linux-gnu" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="-lqb -ldl -lbz2 -lxslt -lrt -ldl -luuid -lglib-2.0 -lxml2" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="/usr/share/man" +S["localedir"]="/usr/share/locale" +S["libdir"]="/usr/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="/usr/share/info" +S["docdir"]="/usr/share/doc/pacemaker" +S["oldincludedir"]="/usr/include" +S["includedir"]="/usr/include" +S["runstatedir"]="/var/run" +S["localstatedir"]="/var" +S["sharedstatedir"]="/usr/com" +S["sysconfdir"]="/etc" +S["datadir"]="/usr/share" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="/usr/libexec" +S["sbindir"]="/usr/sbin" +S["bindir"]="/usr/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr" +S["exec_prefix"]="/usr" +S["PACKAGE_URL"]="https://ClusterLabs.org/pacemaker/" +S["PACKAGE_BUGREPORT"]="users@clusterlabs.org" +S["PACKAGE_STRING"]="pacemaker 2.1.4" +S["PACKAGE_VERSION"]="2.1.4" +S["PACKAGE_TARNAME"]="pacemaker" +S["PACKAGE_NAME"]="pacemaker" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +S["am__quote"]="" + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + diff --git a/conf5rsWZM/subs1.awk b/conf5rsWZM/subs1.awk new file mode 100644 index 00000000000..ee68bcbdf0f --- /dev/null +++ b/conf5rsWZM/subs1.awk @@ -0,0 +1,346 @@ +BEGIN { +S["ltdl_LTLIBOBJS"]=" lt__strl.lo" +S["ltdl_LIBOBJS"]=" lt__strl.o" +S["gltests_LTLIBOBJS"]="" +S["gltests_LIBOBJS"]="" +S["gl_LTLIBOBJS"]="" +S["gl_LIBOBJS"]="" +S["am__EXEEXT_FALSE"]="" +S["am__EXEEXT_TRUE"]="#" +S["LTLIBOBJS"]=" ${LIBOBJDIR}NoSuchFunctionName$U.lo" +S["QUIET_LIBTOOL_OPTS"]="" +S["MAKEFLAGS"]=" " +S["PCMK_FEATURES"]="corosync-ge-2 monotonic nagios" +S["LOCALE"]="" +S["CFLAGS_COPY"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ +"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ +"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection -Werror" +S["NON_FATAL_CFLAGS"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ +"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ +"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection" +S["BUILD_OPENIPMI_SERVICELOG_FALSE"]="" +S["BUILD_OPENIPMI_SERVICELOG_TRUE"]="#" +S["OPENIPMI_SERVICELOG_LIBS"]="" +S["OPENIPMI_SERVICELOG_CFLAGS"]="" +S["BUILD_SERVICELOG_FALSE"]="" +S["BUILD_SERVICELOG_TRUE"]="#" +S["SERVICELOG_LIBS"]="" +S["SERVICELOG_CFLAGS"]="" +S["BUILD_REMOTE_FALSE"]="" +S["BUILD_REMOTE_TRUE"]="#" +S["PC_NAME_GNUTLS"]="" +S["BUILD_CIBSECRETS_FALSE"]="" +S["BUILD_CIBSECRETS_TRUE"]="#" +S["LRM_CIBSECRETS_DIR"]="" +S["PC_NAME_CLUSTER"]=" libcfg libcmap libcorosync_common libcpg libquorum" +S["CLUSTERLIBS"]=" -lcpg -lqb -ldl -lcfg -lqb -ldl -lcmap -lqb -ldl -lquorum -lqb -ldl -lcorosync_common -lqb -ldl" +S["SUPPORT_COROSYNC"]="" +S["BUILD_CS_SUPPORT_FALSE"]="#" +S["BUILD_CS_SUPPORT_TRUE"]="" +S["libcorosync_common_LIBS"]="-lcorosync_common -lqb -ldl" +S["libcorosync_common_CFLAGS"]="" +S["quorum_LIBS"]="-lquorum -lqb -ldl" +S["quorum_CFLAGS"]="" +S["cmap_LIBS"]="-lcmap -lqb -ldl" +S["cmap_CFLAGS"]="" +S["cfg_LIBS"]="-lcfg -lqb -ldl" +S["cfg_CFLAGS"]="" +S["cpg_LIBS"]="-lcpg -lqb -ldl" +S["cpg_CFLAGS"]="" +S["NAGIOS_METADATA_DIR"]="/usr/share/nagios/plugins-metadata" +S["NAGIOS_PLUGIN_DIR"]="/usr/libexec/nagios/plugins" +S["BUILD_NAGIOS_FALSE"]="#" +S["BUILD_NAGIOS_TRUE"]="" +S["SUPPORT_UPSTART"]="" +S["BUILD_UPSTART_FALSE"]="" +S["BUILD_UPSTART_TRUE"]="#" +S["SUPPORT_SYSTEMD"]="" +S["BUILD_SYSTEMD_FALSE"]="" +S["BUILD_SYSTEMD_TRUE"]="#" +S["PC_NAME_DBUS"]="" +S["BUILD_DBUS_FALSE"]="" +S["BUILD_DBUS_TRUE"]="#" +S["DBUS_LIBS"]="" +S["DBUS_CFLAGS"]="" +S["BUILD_VERSION"]="c5ecab892" +S["GIT"]="/usr/bin/git" +S["PACEMAKER_CONFIG_DIR"]="/etc/pacemaker" +S["CRM_RSCTMP_DIR"]="/var/run/resource-agents" +S["CRM_STATE_DIR"]="/var/run/crm" +S["CRM_DAEMON_DIR"]="/usr/libexec/pacemaker" +S["CRM_CONFIG_DIR"]="/var/lib/pacemaker/cib" +S["PE_STATE_DIR"]="/var/lib/pacemaker/pengine" +S["CRM_BLACKBOX_DIR"]="/var/lib/pacemaker/blackbox" +S["CRM_PACEMAKER_DIR"]="/var/lib/pacemaker" +S["CRM_DAEMON_GROUP"]="haclient" +S["CRM_DAEMON_USER"]="hacluster" +S["CRM_CORE_DIR"]="/var/lib/pacemaker/cores" +S["CRM_SCHEMA_DIRECTORY"]="/usr/share/pacemaker" +S["BUILD_LHA_SUPPORT_FALSE"]="" +S["BUILD_LHA_SUPPORT_TRUE"]="#" +S["libqb_LIBS"]="-lqb -ldl" +S["libqb_CFLAGS"]="" +S["BUILD_PROFILING_FALSE"]="" +S["BUILD_PROFILING_TRUE"]="#" +S["PC_LIBS_CURSES"]="" +S["PC_NAME_CURSES"]="" +S["CURSESLIBS"]="" +S["WRAPPABLE_UNAME_FALSE"]="#" +S["WRAPPABLE_UNAME_TRUE"]="" +S["LIBXML2_LIBS"]="-lxml2" +S["LIBXML2_CFLAGS"]="-I/usr/include/libxml2" +S["GLIB_LIBS"]="-lglib-2.0" +S["GLIB_CFLAGS"]="-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include" +S["PC_LIBS_RT"]="-lrt" +S["UUID_LIBS"]="-luuid" +S["UUID_CFLAGS"]="-I/usr/include/uuid" +S["LIBOBJS"]=" ${LIBOBJDIR}NoSuchFunctionName$U.o" +S["GETOPT_PATH"]="/usr/bin/getopt" +S["BUILD_SPHINX_DOCS_FALSE"]="" +S["BUILD_SPHINX_DOCS_TRUE"]="#" +S["BUILD_ASCIIDOC_FALSE"]="" +S["BUILD_ASCIIDOC_TRUE"]="#" +S["IS_ASCIIDOC_FALSE"]="" +S["IS_ASCIIDOC_TRUE"]="#" +S["BUILD_XML_HELP_FALSE"]="" +S["BUILD_XML_HELP_TRUE"]="#" +S["MANPAGE_XSLT"]="" +S["BUILD_HELP_FALSE"]="" +S["BUILD_HELP_TRUE"]="#" +S["VALGRIND_BIN"]="/usr/bin/valgrind" +S["BASH_PATH"]="/usr/bin/bash" +S["XMLCATALOG"]="" +S["XSLTPROC"]="/usr/bin/xsltproc" +S["INKSCAPE"]="" +S["SPHINX"]="" +S["HELP2MAN"]="" +S["ASCIIDOC_CONV"]="" +S["pkgpyexecdir"]="${pyexecdir}/pacemaker" +S["pyexecdir"]="${exec_prefix}/local/lib/python3.10/dist-packages" +S["pkgpythondir"]="${pythondir}/pacemaker" +S["pythondir"]="${prefix}/local/lib/python3.10/dist-packages" +S["PYTHON_PLATFORM"]="linux" +S["PYTHON_EXEC_PREFIX"]="${exec_prefix}" +S["PYTHON_PREFIX"]="${prefix}" +S["PYTHON_VERSION"]="3.1" +S["PYTHON"]="/usr/bin/python3" +S["INIT_EXT"]="" +S["BUG_URL"]="https://bugs.clusterlabs.org/enter_bug.cgi?product=Pacemaker" +S["CRM_BUNDLE_DIR"]="/var/log/pacemaker/bundles" +S["CRM_LOG_DIR"]="/var/log/pacemaker" +S["CONFIGDIR"]="/etc/sysconfig" +S["INITDIR"]="/etc/init.d" +S["PACKAGE_SERIES"]="2.1" +S["LDFLAGS_HARDENED_EXE"]=" -Wl,-z,relro -pie -Wl,-z,now -Wl,--as-needed" +S["CFLAGS_HARDENED_EXE"]=" -fPIE" +S["LDFLAGS_HARDENED_LIB"]=" -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" +S["CFLAGS_HARDENED_LIB"]="" +S["PCMK__FENCE_BINDIR"]="/usr/sbin" +S["FA_PREFIX"]="" +S["OCF_RA_INSTALL_DIR"]="/usr/lib/ocf/resource.d" +S["OCF_RA_PATH"]="/usr/lib/ocf/resource.d" +S["OCF_ROOT_DIR"]="/usr/lib/ocf" +S["PCMK__COROSYNC_CONF"]="/usr/etc/corosync/corosync.conf" +S["POSUB"]="" +S["LTLIBINTL"]="" +S["LIBINTL"]="" +S["INTLLIBS"]="" +S["LTLIBICONV"]="-liconv" +S["LIBICONV"]="-liconv" +S["INTL_MACOSX_LIBS"]="" +S["XGETTEXT_EXTRA_OPTIONS"]="" +S["MSGMERGE"]="/usr/bin/msgmerge" +S["XGETTEXT_015"]="/usr/bin/xgettext" +S["XGETTEXT"]="/usr/bin/xgettext" +S["GMSGFMT_015"]="/usr/bin/msgfmt" +S["MSGFMT_015"]="/usr/bin/msgfmt" +S["GMSGFMT"]="/usr/bin/msgfmt" +S["MSGFMT"]="/usr/bin/msgfmt" +S["GETTEXT_MACRO_VERSION"]="0.18" +S["USE_NLS"]="no" +S["BUILD_LEGACY_LINKS_FALSE"]="" +S["BUILD_LEGACY_LINKS_TRUE"]="#" +S["systemdsystemunitdir"]="" +S["LTDLOPEN"]="libltdl" +S["LT_CONFIG_H"]="include/config.h" +S["subdirs"]=" libltdl" +S["CONVENIENCE_LTDL_FALSE"]="#" +S["CONVENIENCE_LTDL_TRUE"]="" +S["INSTALL_LTDL_FALSE"]="" +S["INSTALL_LTDL_TRUE"]="#" +S["LT_ARGZ_H"]="" +S["sys_symbol_underscore"]="no" +S["LIBADD_DL"]="-ldl" +S["LT_DLPREOPEN"]="-dlpreopen libltdl/dlopen.la " +S["LIBADD_DLD_LINK"]="" +S["LIBADD_SHL_LOAD"]="" +S["LIBADD_DLOPEN"]="-ldl" +S["LT_DLLOADERS"]=" libltdl/dlopen.la" +S["INCLTDL"]="" +S["LTDLINCL"]="" +S["LTDLDEPS"]="" +S["LIBLTDL"]="-lltdl" +S["CXXCPP"]="g++ -E" +S["LT_SYS_LIBRARY_PATH"]="" +S["OTOOL64"]="" +S["OTOOL"]="" +S["LIPO"]="" +S["NMEDIT"]="" +S["DSYMUTIL"]="" +S["MANIFEST_TOOL"]=":" +S["ac_ct_AR"]="ar" +S["DLLTOOL"]="false" +S["OBJDUMP"]="objdump" +S["LN_S"]="ln -s" +S["NM"]="/usr/bin/nm -B" +S["ac_ct_DUMPBIN"]="" +S["DUMPBIN"]="" +S["LD"]="/usr/bin/ld -m elf_x86_64" +S["FGREP"]="/usr/bin/grep -F" +S["SED"]="/usr/bin/sed" +S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool --tag=CC $(QUIET_LIBTOOL_OPTS)" +S["AM_LDFLAGS"]="-Wl,--enable-new-dtags" +S["gltests_WITNESS"]="IN_PACEMAKER_GNULIB_TESTS" +S["GL_GENERATE_STDALIGN_H_FALSE"]="" +S["GL_GENERATE_STDALIGN_H_TRUE"]="#" +S["STDALIGN_H"]="" +S["LIB_CRYPTO"]="" +S["GL_GENERATE_BYTESWAP_H_FALSE"]="" +S["GL_GENERATE_BYTESWAP_H_TRUE"]="#" +S["BYTESWAP_H"]="" +S["GL_COND_LIBTOOL_FALSE"]="#" +S["GL_COND_LIBTOOL_TRUE"]="" +S["RANLIB"]="ranlib" +S["ARFLAGS"]="cr" +S["AR"]="ar" +S["EGREP"]="/usr/bin/grep -E" +S["GREP"]="/usr/bin/grep" +S["CPP"]="gcc -E" +S["am__fastdepCXX_FALSE"]="#" +S["am__fastdepCXX_TRUE"]="" +S["CXXDEPMODE"]="depmode=gcc3" +S["ac_ct_CXX"]="g++" +S["CXXFLAGS"]="-g -O2" +S["CXX"]="g++" +S["am__fastdepCC_FALSE"]="#" +S["am__fastdepCC_TRUE"]="" +S["CCDEPMODE"]="depmode=gcc3" +S["am__nodep"]="_no" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]=" -I/usr/include/uuid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libxml2 -I/usr/include/heartbeat " +S["LDFLAGS"]=" " +S["CFLAGS"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ +"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ +"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection -Werror" +S["CC"]="gcc" +S["noarch_pkgconfigdir"]="${datadir}/pkgconfig" +S["pkgconfigdir"]="${libdir}/pkgconfig" +S["PKG_CONFIG_LIBDIR"]="" +S["PKG_CONFIG_PATH"]="" +S["PKG_CONFIG"]="/usr/bin/pkg-config" +S["AM_BACKSLASH"]="\\" +S["AM_DEFAULT_VERBOSITY"]="1" +S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)" +S["AM_V"]="$(V)" +S["am__untar"]="tar -xf -" +S["am__tar"]="tar --format=ustar -chf - \"$$tardir\"" +S["AMTAR"]="$${TAR-tar}" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="gawk" +S["mkdir_p"]="/usr/bin/mkdir -p" +S["MKDIR_P"]="/usr/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="strip" +S["install_sh"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/install-sh" +S["MAKEINFO"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing makeinfo" +S["AUTOHEADER"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing autoheader" +S["AUTOMAKE"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing automake-1.16" +S["AUTOCONF"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing autoconf" +S["ACLOCAL"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing aclocal-1.16" +S["VERSION"]="2.1.4" +S["PACKAGE"]="pacemaker" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["host_os"]="linux-gnu" +S["host_vendor"]="pc" +S["host_cpu"]="x86_64" +S["host"]="x86_64-pc-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="pc" +S["build_cpu"]="x86_64" +S["build"]="x86_64-pc-linux-gnu" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="-lqb -ldl -lbz2 -lxslt -lrt -ldl -luuid -lglib-2.0 -lxml2" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="/usr/share/man" +S["localedir"]="/usr/share/locale" +S["libdir"]="/usr/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="/usr/share/info" +S["docdir"]="/usr/share/doc/pacemaker" +S["oldincludedir"]="/usr/include" +S["includedir"]="/usr/include" +S["runstatedir"]="/var/run" +S["localstatedir"]="/var" +S["sharedstatedir"]="/usr/com" +S["sysconfdir"]="/etc" +S["datadir"]="/usr/share" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="/usr/libexec" +S["sbindir"]="/usr/sbin" +S["bindir"]="/usr/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr" +S["exec_prefix"]="/usr" +S["PACKAGE_URL"]="https://ClusterLabs.org/pacemaker/" +S["PACKAGE_BUGREPORT"]="users@clusterlabs.org" +S["PACKAGE_STRING"]="pacemaker 2.1.4" +S["PACKAGE_VERSION"]="2.1.4" +S["PACKAGE_TARNAME"]="pacemaker" +S["PACKAGE_NAME"]="pacemaker" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +S["am__quote"]="" + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 36307a3dbad..231f0e88c4f 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1476,6 +1476,9 @@ services__execute_file_as_plugin(svc_action_t *op) { int err_fd; char out_file_name[100] = "outfd-"; char err_file_name[100] = "errfd-"; + + add_action_env_vars(op); + sprintf(num, "%d", getpid()); strcat(out_file_name, num); strcat(err_file_name, num); From 510ba9385b7b8edfbd9404d27b09223cc72df367 Mon Sep 17 00:00:00 2001 From: semtagg Date: Thu, 8 Dec 2022 14:43:47 +0300 Subject: [PATCH 15/48] wip --- conf5rsWZM/defines.awk | 191 ------------------- conf5rsWZM/subs.awk | 346 ---------------------------------- conf5rsWZM/subs1.awk | 346 ---------------------------------- lib/services/services_linux.c | 2 +- 4 files changed, 1 insertion(+), 884 deletions(-) delete mode 100644 conf5rsWZM/defines.awk delete mode 100644 conf5rsWZM/subs.awk delete mode 100644 conf5rsWZM/subs1.awk diff --git a/conf5rsWZM/defines.awk b/conf5rsWZM/defines.awk deleted file mode 100644 index a611064a169..00000000000 --- a/conf5rsWZM/defines.awk +++ /dev/null @@ -1,191 +0,0 @@ -BEGIN { -D["PACKAGE_NAME"]=" \"pacemaker\"" -D["PACKAGE_TARNAME"]=" \"pacemaker\"" -D["PACKAGE_VERSION"]=" \"2.1.4\"" -D["PACKAGE_STRING"]=" \"pacemaker 2.1.4\"" -D["PACKAGE_BUGREPORT"]=" \"users@clusterlabs.org\"" -D["PACKAGE_URL"]=" \"https://ClusterLabs.org/pacemaker/\"" -D["PACKAGE"]=" \"pacemaker\"" -D["VERSION"]=" \"2.1.4\"" -D["ENABLE_VERSIONED_ATTRS"]=" 0" -D["STDC_HEADERS"]=" 1" -D["HAVE_SYS_TYPES_H"]=" 1" -D["HAVE_SYS_STAT_H"]=" 1" -D["HAVE_STDLIB_H"]=" 1" -D["HAVE_STRING_H"]=" 1" -D["HAVE_MEMORY_H"]=" 1" -D["HAVE_STRINGS_H"]=" 1" -D["HAVE_INTTYPES_H"]=" 1" -D["HAVE_STDINT_H"]=" 1" -D["HAVE_UNISTD_H"]=" 1" -D["restrict"]=" __restrict" -D["HAVE_BYTESWAP_H"]=" 1" -D["HAVE_DLFCN_H"]=" 1" -D["LT_OBJDIR"]=" \".libs/\"" -D["LT_MODULE_EXT"]=" \".so\"" -D["LT_MODULE_PATH_VAR"]=" \"LD_LIBRARY_PATH\"" -D["LT_DLSEARCH_PATH"]=" \"/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-"\ -"gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/"\ -"usr/lib/x86_64-linux-gnu\"" -D["HAVE_LIBDL"]=" 1" -D["HAVE_DLERROR"]=" 1" -D["HAVE_LIBDLLOADER"]=" 1" -D["HAVE_ARGZ_H"]=" 1" -D["HAVE_ERROR_T"]=" 1" -D["HAVE_ARGZ_ADD"]=" 1" -D["HAVE_ARGZ_APPEND"]=" 1" -D["HAVE_ARGZ_COUNT"]=" 1" -D["HAVE_ARGZ_CREATE_SEP"]=" 1" -D["HAVE_ARGZ_INSERT"]=" 1" -D["HAVE_ARGZ_NEXT"]=" 1" -D["HAVE_ARGZ_STRINGIFY"]=" 1" -D["HAVE_WORKING_ARGZ"]=" 1" -D["HAVE_PRELOADED_SYMBOLS"]=" 1" -D["HAVE_LTDL"]=" 1" -D["HAVE_UNISTD_H"]=" 1" -D["HAVE_DIRENT_H"]=" 1" -D["HAVE_CLOSEDIR"]=" 1" -D["HAVE_OPENDIR"]=" 1" -D["HAVE_READDIR"]=" 1" -D["LT_LIBEXT"]=" \"a\"" -D["LT_LIBPREFIX"]=" \"lib\"" -D["SIZEOF_CHAR"]=" 1" -D["SIZEOF_SHORT"]=" 2" -D["SIZEOF_INT"]=" 4" -D["SIZEOF_LONG"]=" 8" -D["SIZEOF_LONG_LONG"]=" 8" -D["PCMK__CONCURRENT_FENCING_DEFAULT"]=" \"false\"" -D["PCMK__SBD_SYNC_DEFAULT"]=" false" -D["PCMK__RESOURCE_STICKINESS_DEFAULT"]=" 0" -D["OCF_ROOT_DIR"]=" \"/usr/lib/ocf\"" -D["PACEMAKER_VERSION"]=" \"2.1.4\"" -D["PCMK__LOCALE_DIR"]=" \"/usr/share/locale\"" -D["PCMK_RUN_DIR"]=" \"/var/run\"" -D["PCMK__LSB_INIT_DIR"]=" \"/etc/init.d\"" -D["CRM_LOG_DIR"]=" \"/var/log/pacemaker\"" -D["CRM_BUNDLE_DIR"]=" \"/var/log/pacemaker/bundles\"" -D["PCMK__FENCE_BINDIR"]=" \"/usr/sbin\"" -D["OCF_RA_PATH"]=" \"/usr/lib/ocf/resource.d\"" -D["PCMK_GNUTLS_PRIORITIES"]=" \"NORMAL\"" -D["US_AUTH_PEERCRED_UCRED"]=" 1" -D["SUPPORT_PROCFS"]=" 1" -D["HAVE_DECL_PRIU64"]=" 1" -D["HAVE_DECL_PRIU32"]=" 1" -D["HAVE_DECL_PRIX32"]=" 1" -D["HAVE_DECL_SCNU64"]=" 1" -D["U64T"]=" PRIu64" -D["U32T"]=" PRIu32" -D["X32T"]=" PRIx32" -D["U64TS"]=" SCNu64" -D["VALGRIND_BIN"]=" \"/usr/bin/valgrind\"" -D["HAVE_ALPHASORT"]=" 1" -D["HAVE_SCANDIR"]=" 1" -D["HAVE_STRERROR"]=" 1" -D["HAVE_STRCHRNUL"]=" 1" -D["HAVE_STRNLEN"]=" 1" -D["HAVE_STRNDUP"]=" 1" -D["HAVE_LIBDL"]=" 1" -D["HAVE_LIBRT"]=" 1" -D["HAVE_SCHED_SETSCHEDULER"]=" 1" -D["HAVE_NANOSLEEP"]=" 1" -D["HAVE_USLEEP"]=" 1" -D["HAVE_LIBXSLT"]=" 1" -D["HAVE_GETOPT_H"]=" 1" -D["HAVE_LINUX_SWAB_H"]=" 1" -D["HAVE_STDDEF_H"]=" 1" -D["HAVE_SYS_SIGNALFD_H"]=" 1" -D["HAVE_UUID_UUID_H"]=" 1" -D["HAVE_ARPA_INET_H"]=" 1" -D["HAVE_CTYPE_H"]=" 1" -D["HAVE_DIRENT_H"]=" 1" -D["HAVE_ERRNO_H"]=" 1" -D["HAVE_GLIB_H"]=" 1" -D["HAVE_GRP_H"]=" 1" -D["HAVE_LIMITS_H"]=" 1" -D["HAVE_NETDB_H"]=" 1" -D["HAVE_NETINET_IN_H"]=" 1" -D["HAVE_NETINET_IP_H"]=" 1" -D["HAVE_PWD_H"]=" 1" -D["HAVE_SIGNAL_H"]=" 1" -D["HAVE_STDIO_H"]=" 1" -D["HAVE_STDLIB_H"]=" 1" -D["HAVE_STRING_H"]=" 1" -D["HAVE_STRINGS_H"]=" 1" -D["HAVE_SYS_IOCTL_H"]=" 1" -D["HAVE_SYS_PARAM_H"]=" 1" -D["HAVE_SYS_REBOOT_H"]=" 1" -D["HAVE_SYS_RESOURCE_H"]=" 1" -D["HAVE_SYS_SOCKET_H"]=" 1" -D["HAVE_SYS_STAT_H"]=" 1" -D["HAVE_SYS_TIME_H"]=" 1" -D["HAVE_SYS_TYPES_H"]=" 1" -D["HAVE_SYS_UTSNAME_H"]=" 1" -D["HAVE_SYS_WAIT_H"]=" 1" -D["HAVE_TIME_H"]=" 1" -D["HAVE_UNISTD_H"]=" 1" -D["HAVE_LIBXML_XPATH_H"]=" 1" -D["HAVE_LIBXSLT_XSLT_H"]=" 1" -D["HAVE_UUID_UNPARSE"]=" 1" -D["HAVE_DECL_CLOCK_MONOTONIC"]=" 1" -D["HAVE_DECL_ASSERT_FLOAT_EQUAL"]=" 0" -D["HAVE_STRUCT_TM_TM_GMTOFF"]=" 1" -D["HAVE_STRUCT_DIRENT_D_TYPE"]=" 1" -D["SSCANF_HAS_M"]=" 1" -D["HAVE_BZLIB_H"]=" 1" -D["HAVE_LIBBZ2"]=" 1" -D["SUPPORT_PROFILING"]=" 0" -D["CRM_SCHEMA_DIRECTORY"]=" \"/usr/share/pacemaker\"" -D["CRM_CORE_DIR"]=" \"/var/lib/pacemaker/cores\"" -D["CRM_DAEMON_USER"]=" \"hacluster\"" -D["CRM_DAEMON_GROUP"]=" \"haclient\"" -D["CRM_PACEMAKER_DIR"]=" \"/var/lib/pacemaker\"" -D["CRM_BLACKBOX_DIR"]=" \"/var/lib/pacemaker/blackbox\"" -D["PE_STATE_DIR"]=" \"/var/lib/pacemaker/pengine\"" -D["CRM_CONFIG_DIR"]=" \"/var/lib/pacemaker/cib\"" -D["CRM_DAEMON_DIR"]=" \"/usr/libexec/pacemaker\"" -D["CRM_STATE_DIR"]=" \"/var/run/crm\"" -D["CRM_RSCTMP_DIR"]=" \"/var/run/resource-agents\"" -D["PACEMAKER_CONFIG_DIR"]=" \"/etc/pacemaker\"" -D["SBIN_DIR"]=" \"/usr/sbin\"" -D["BUILD_VERSION"]=" \"c5ecab892\"" -D["SUPPORT_DBUS"]=" 0" -D["SUPPORT_SYSTEMD"]=" 0" -D["SUPPORT_UPSTART"]=" 0" -D["SUPPORT_NAGIOS"]=" 1" -D["NAGIOS_PLUGIN_DIR"]=" \"/usr/libexec/nagios/plugins\"" -D["NAGIOS_METADATA_DIR"]=" \"/usr/share/nagios/plugins-metadata\"" -D["SUPPORT_COROSYNC"]=" 1" -D["SUPPORT_CIBSECRETS"]=" 0" -D["GCC_FORMAT_NONLITERAL_CHECKING_ENABLED"]=" /**/" -D["CRM_FEATURES"]=" \"corosync-ge-2 monotonic nagios\"" - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { - line = $ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } diff --git a/conf5rsWZM/subs.awk b/conf5rsWZM/subs.awk deleted file mode 100644 index ee68bcbdf0f..00000000000 --- a/conf5rsWZM/subs.awk +++ /dev/null @@ -1,346 +0,0 @@ -BEGIN { -S["ltdl_LTLIBOBJS"]=" lt__strl.lo" -S["ltdl_LIBOBJS"]=" lt__strl.o" -S["gltests_LTLIBOBJS"]="" -S["gltests_LIBOBJS"]="" -S["gl_LTLIBOBJS"]="" -S["gl_LIBOBJS"]="" -S["am__EXEEXT_FALSE"]="" -S["am__EXEEXT_TRUE"]="#" -S["LTLIBOBJS"]=" ${LIBOBJDIR}NoSuchFunctionName$U.lo" -S["QUIET_LIBTOOL_OPTS"]="" -S["MAKEFLAGS"]=" " -S["PCMK_FEATURES"]="corosync-ge-2 monotonic nagios" -S["LOCALE"]="" -S["CFLAGS_COPY"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ -"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ -"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection -Werror" -S["NON_FATAL_CFLAGS"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ -"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ -"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection" -S["BUILD_OPENIPMI_SERVICELOG_FALSE"]="" -S["BUILD_OPENIPMI_SERVICELOG_TRUE"]="#" -S["OPENIPMI_SERVICELOG_LIBS"]="" -S["OPENIPMI_SERVICELOG_CFLAGS"]="" -S["BUILD_SERVICELOG_FALSE"]="" -S["BUILD_SERVICELOG_TRUE"]="#" -S["SERVICELOG_LIBS"]="" -S["SERVICELOG_CFLAGS"]="" -S["BUILD_REMOTE_FALSE"]="" -S["BUILD_REMOTE_TRUE"]="#" -S["PC_NAME_GNUTLS"]="" -S["BUILD_CIBSECRETS_FALSE"]="" -S["BUILD_CIBSECRETS_TRUE"]="#" -S["LRM_CIBSECRETS_DIR"]="" -S["PC_NAME_CLUSTER"]=" libcfg libcmap libcorosync_common libcpg libquorum" -S["CLUSTERLIBS"]=" -lcpg -lqb -ldl -lcfg -lqb -ldl -lcmap -lqb -ldl -lquorum -lqb -ldl -lcorosync_common -lqb -ldl" -S["SUPPORT_COROSYNC"]="" -S["BUILD_CS_SUPPORT_FALSE"]="#" -S["BUILD_CS_SUPPORT_TRUE"]="" -S["libcorosync_common_LIBS"]="-lcorosync_common -lqb -ldl" -S["libcorosync_common_CFLAGS"]="" -S["quorum_LIBS"]="-lquorum -lqb -ldl" -S["quorum_CFLAGS"]="" -S["cmap_LIBS"]="-lcmap -lqb -ldl" -S["cmap_CFLAGS"]="" -S["cfg_LIBS"]="-lcfg -lqb -ldl" -S["cfg_CFLAGS"]="" -S["cpg_LIBS"]="-lcpg -lqb -ldl" -S["cpg_CFLAGS"]="" -S["NAGIOS_METADATA_DIR"]="/usr/share/nagios/plugins-metadata" -S["NAGIOS_PLUGIN_DIR"]="/usr/libexec/nagios/plugins" -S["BUILD_NAGIOS_FALSE"]="#" -S["BUILD_NAGIOS_TRUE"]="" -S["SUPPORT_UPSTART"]="" -S["BUILD_UPSTART_FALSE"]="" -S["BUILD_UPSTART_TRUE"]="#" -S["SUPPORT_SYSTEMD"]="" -S["BUILD_SYSTEMD_FALSE"]="" -S["BUILD_SYSTEMD_TRUE"]="#" -S["PC_NAME_DBUS"]="" -S["BUILD_DBUS_FALSE"]="" -S["BUILD_DBUS_TRUE"]="#" -S["DBUS_LIBS"]="" -S["DBUS_CFLAGS"]="" -S["BUILD_VERSION"]="c5ecab892" -S["GIT"]="/usr/bin/git" -S["PACEMAKER_CONFIG_DIR"]="/etc/pacemaker" -S["CRM_RSCTMP_DIR"]="/var/run/resource-agents" -S["CRM_STATE_DIR"]="/var/run/crm" -S["CRM_DAEMON_DIR"]="/usr/libexec/pacemaker" -S["CRM_CONFIG_DIR"]="/var/lib/pacemaker/cib" -S["PE_STATE_DIR"]="/var/lib/pacemaker/pengine" -S["CRM_BLACKBOX_DIR"]="/var/lib/pacemaker/blackbox" -S["CRM_PACEMAKER_DIR"]="/var/lib/pacemaker" -S["CRM_DAEMON_GROUP"]="haclient" -S["CRM_DAEMON_USER"]="hacluster" -S["CRM_CORE_DIR"]="/var/lib/pacemaker/cores" -S["CRM_SCHEMA_DIRECTORY"]="/usr/share/pacemaker" -S["BUILD_LHA_SUPPORT_FALSE"]="" -S["BUILD_LHA_SUPPORT_TRUE"]="#" -S["libqb_LIBS"]="-lqb -ldl" -S["libqb_CFLAGS"]="" -S["BUILD_PROFILING_FALSE"]="" -S["BUILD_PROFILING_TRUE"]="#" -S["PC_LIBS_CURSES"]="" -S["PC_NAME_CURSES"]="" -S["CURSESLIBS"]="" -S["WRAPPABLE_UNAME_FALSE"]="#" -S["WRAPPABLE_UNAME_TRUE"]="" -S["LIBXML2_LIBS"]="-lxml2" -S["LIBXML2_CFLAGS"]="-I/usr/include/libxml2" -S["GLIB_LIBS"]="-lglib-2.0" -S["GLIB_CFLAGS"]="-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include" -S["PC_LIBS_RT"]="-lrt" -S["UUID_LIBS"]="-luuid" -S["UUID_CFLAGS"]="-I/usr/include/uuid" -S["LIBOBJS"]=" ${LIBOBJDIR}NoSuchFunctionName$U.o" -S["GETOPT_PATH"]="/usr/bin/getopt" -S["BUILD_SPHINX_DOCS_FALSE"]="" -S["BUILD_SPHINX_DOCS_TRUE"]="#" -S["BUILD_ASCIIDOC_FALSE"]="" -S["BUILD_ASCIIDOC_TRUE"]="#" -S["IS_ASCIIDOC_FALSE"]="" -S["IS_ASCIIDOC_TRUE"]="#" -S["BUILD_XML_HELP_FALSE"]="" -S["BUILD_XML_HELP_TRUE"]="#" -S["MANPAGE_XSLT"]="" -S["BUILD_HELP_FALSE"]="" -S["BUILD_HELP_TRUE"]="#" -S["VALGRIND_BIN"]="/usr/bin/valgrind" -S["BASH_PATH"]="/usr/bin/bash" -S["XMLCATALOG"]="" -S["XSLTPROC"]="/usr/bin/xsltproc" -S["INKSCAPE"]="" -S["SPHINX"]="" -S["HELP2MAN"]="" -S["ASCIIDOC_CONV"]="" -S["pkgpyexecdir"]="${pyexecdir}/pacemaker" -S["pyexecdir"]="${exec_prefix}/local/lib/python3.10/dist-packages" -S["pkgpythondir"]="${pythondir}/pacemaker" -S["pythondir"]="${prefix}/local/lib/python3.10/dist-packages" -S["PYTHON_PLATFORM"]="linux" -S["PYTHON_EXEC_PREFIX"]="${exec_prefix}" -S["PYTHON_PREFIX"]="${prefix}" -S["PYTHON_VERSION"]="3.1" -S["PYTHON"]="/usr/bin/python3" -S["INIT_EXT"]="" -S["BUG_URL"]="https://bugs.clusterlabs.org/enter_bug.cgi?product=Pacemaker" -S["CRM_BUNDLE_DIR"]="/var/log/pacemaker/bundles" -S["CRM_LOG_DIR"]="/var/log/pacemaker" -S["CONFIGDIR"]="/etc/sysconfig" -S["INITDIR"]="/etc/init.d" -S["PACKAGE_SERIES"]="2.1" -S["LDFLAGS_HARDENED_EXE"]=" -Wl,-z,relro -pie -Wl,-z,now -Wl,--as-needed" -S["CFLAGS_HARDENED_EXE"]=" -fPIE" -S["LDFLAGS_HARDENED_LIB"]=" -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" -S["CFLAGS_HARDENED_LIB"]="" -S["PCMK__FENCE_BINDIR"]="/usr/sbin" -S["FA_PREFIX"]="" -S["OCF_RA_INSTALL_DIR"]="/usr/lib/ocf/resource.d" -S["OCF_RA_PATH"]="/usr/lib/ocf/resource.d" -S["OCF_ROOT_DIR"]="/usr/lib/ocf" -S["PCMK__COROSYNC_CONF"]="/usr/etc/corosync/corosync.conf" -S["POSUB"]="" -S["LTLIBINTL"]="" -S["LIBINTL"]="" -S["INTLLIBS"]="" -S["LTLIBICONV"]="-liconv" -S["LIBICONV"]="-liconv" -S["INTL_MACOSX_LIBS"]="" -S["XGETTEXT_EXTRA_OPTIONS"]="" -S["MSGMERGE"]="/usr/bin/msgmerge" -S["XGETTEXT_015"]="/usr/bin/xgettext" -S["XGETTEXT"]="/usr/bin/xgettext" -S["GMSGFMT_015"]="/usr/bin/msgfmt" -S["MSGFMT_015"]="/usr/bin/msgfmt" -S["GMSGFMT"]="/usr/bin/msgfmt" -S["MSGFMT"]="/usr/bin/msgfmt" -S["GETTEXT_MACRO_VERSION"]="0.18" -S["USE_NLS"]="no" -S["BUILD_LEGACY_LINKS_FALSE"]="" -S["BUILD_LEGACY_LINKS_TRUE"]="#" -S["systemdsystemunitdir"]="" -S["LTDLOPEN"]="libltdl" -S["LT_CONFIG_H"]="include/config.h" -S["subdirs"]=" libltdl" -S["CONVENIENCE_LTDL_FALSE"]="#" -S["CONVENIENCE_LTDL_TRUE"]="" -S["INSTALL_LTDL_FALSE"]="" -S["INSTALL_LTDL_TRUE"]="#" -S["LT_ARGZ_H"]="" -S["sys_symbol_underscore"]="no" -S["LIBADD_DL"]="-ldl" -S["LT_DLPREOPEN"]="-dlpreopen libltdl/dlopen.la " -S["LIBADD_DLD_LINK"]="" -S["LIBADD_SHL_LOAD"]="" -S["LIBADD_DLOPEN"]="-ldl" -S["LT_DLLOADERS"]=" libltdl/dlopen.la" -S["INCLTDL"]="" -S["LTDLINCL"]="" -S["LTDLDEPS"]="" -S["LIBLTDL"]="-lltdl" -S["CXXCPP"]="g++ -E" -S["LT_SYS_LIBRARY_PATH"]="" -S["OTOOL64"]="" -S["OTOOL"]="" -S["LIPO"]="" -S["NMEDIT"]="" -S["DSYMUTIL"]="" -S["MANIFEST_TOOL"]=":" -S["ac_ct_AR"]="ar" -S["DLLTOOL"]="false" -S["OBJDUMP"]="objdump" -S["LN_S"]="ln -s" -S["NM"]="/usr/bin/nm -B" -S["ac_ct_DUMPBIN"]="" -S["DUMPBIN"]="" -S["LD"]="/usr/bin/ld -m elf_x86_64" -S["FGREP"]="/usr/bin/grep -F" -S["SED"]="/usr/bin/sed" -S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool --tag=CC $(QUIET_LIBTOOL_OPTS)" -S["AM_LDFLAGS"]="-Wl,--enable-new-dtags" -S["gltests_WITNESS"]="IN_PACEMAKER_GNULIB_TESTS" -S["GL_GENERATE_STDALIGN_H_FALSE"]="" -S["GL_GENERATE_STDALIGN_H_TRUE"]="#" -S["STDALIGN_H"]="" -S["LIB_CRYPTO"]="" -S["GL_GENERATE_BYTESWAP_H_FALSE"]="" -S["GL_GENERATE_BYTESWAP_H_TRUE"]="#" -S["BYTESWAP_H"]="" -S["GL_COND_LIBTOOL_FALSE"]="#" -S["GL_COND_LIBTOOL_TRUE"]="" -S["RANLIB"]="ranlib" -S["ARFLAGS"]="cr" -S["AR"]="ar" -S["EGREP"]="/usr/bin/grep -E" -S["GREP"]="/usr/bin/grep" -S["CPP"]="gcc -E" -S["am__fastdepCXX_FALSE"]="#" -S["am__fastdepCXX_TRUE"]="" -S["CXXDEPMODE"]="depmode=gcc3" -S["ac_ct_CXX"]="g++" -S["CXXFLAGS"]="-g -O2" -S["CXX"]="g++" -S["am__fastdepCC_FALSE"]="#" -S["am__fastdepCC_TRUE"]="" -S["CCDEPMODE"]="depmode=gcc3" -S["am__nodep"]="_no" -S["AMDEPBACKSLASH"]="\\" -S["AMDEP_FALSE"]="#" -S["AMDEP_TRUE"]="" -S["am__include"]="include" -S["DEPDIR"]=".deps" -S["OBJEXT"]="o" -S["EXEEXT"]="" -S["ac_ct_CC"]="gcc" -S["CPPFLAGS"]=" -I/usr/include/uuid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libxml2 -I/usr/include/heartbeat " -S["LDFLAGS"]=" " -S["CFLAGS"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ -"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ -"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection -Werror" -S["CC"]="gcc" -S["noarch_pkgconfigdir"]="${datadir}/pkgconfig" -S["pkgconfigdir"]="${libdir}/pkgconfig" -S["PKG_CONFIG_LIBDIR"]="" -S["PKG_CONFIG_PATH"]="" -S["PKG_CONFIG"]="/usr/bin/pkg-config" -S["AM_BACKSLASH"]="\\" -S["AM_DEFAULT_VERBOSITY"]="1" -S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)" -S["AM_V"]="$(V)" -S["am__untar"]="tar -xf -" -S["am__tar"]="tar --format=ustar -chf - \"$$tardir\"" -S["AMTAR"]="$${TAR-tar}" -S["am__leading_dot"]="." -S["SET_MAKE"]="" -S["AWK"]="gawk" -S["mkdir_p"]="/usr/bin/mkdir -p" -S["MKDIR_P"]="/usr/bin/mkdir -p" -S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" -S["STRIP"]="strip" -S["install_sh"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/install-sh" -S["MAKEINFO"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing makeinfo" -S["AUTOHEADER"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing autoheader" -S["AUTOMAKE"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing automake-1.16" -S["AUTOCONF"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing autoconf" -S["ACLOCAL"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing aclocal-1.16" -S["VERSION"]="2.1.4" -S["PACKAGE"]="pacemaker" -S["CYGPATH_W"]="echo" -S["am__isrc"]="" -S["INSTALL_DATA"]="${INSTALL} -m 644" -S["INSTALL_SCRIPT"]="${INSTALL}" -S["INSTALL_PROGRAM"]="${INSTALL}" -S["host_os"]="linux-gnu" -S["host_vendor"]="pc" -S["host_cpu"]="x86_64" -S["host"]="x86_64-pc-linux-gnu" -S["build_os"]="linux-gnu" -S["build_vendor"]="pc" -S["build_cpu"]="x86_64" -S["build"]="x86_64-pc-linux-gnu" -S["target_alias"]="" -S["host_alias"]="" -S["build_alias"]="" -S["LIBS"]="-lqb -ldl -lbz2 -lxslt -lrt -ldl -luuid -lglib-2.0 -lxml2" -S["ECHO_T"]="" -S["ECHO_N"]="-n" -S["ECHO_C"]="" -S["DEFS"]="-DHAVE_CONFIG_H" -S["mandir"]="/usr/share/man" -S["localedir"]="/usr/share/locale" -S["libdir"]="/usr/lib" -S["psdir"]="${docdir}" -S["pdfdir"]="${docdir}" -S["dvidir"]="${docdir}" -S["htmldir"]="${docdir}" -S["infodir"]="/usr/share/info" -S["docdir"]="/usr/share/doc/pacemaker" -S["oldincludedir"]="/usr/include" -S["includedir"]="/usr/include" -S["runstatedir"]="/var/run" -S["localstatedir"]="/var" -S["sharedstatedir"]="/usr/com" -S["sysconfdir"]="/etc" -S["datadir"]="/usr/share" -S["datarootdir"]="${prefix}/share" -S["libexecdir"]="/usr/libexec" -S["sbindir"]="/usr/sbin" -S["bindir"]="/usr/bin" -S["program_transform_name"]="s,x,x," -S["prefix"]="/usr" -S["exec_prefix"]="/usr" -S["PACKAGE_URL"]="https://ClusterLabs.org/pacemaker/" -S["PACKAGE_BUGREPORT"]="users@clusterlabs.org" -S["PACKAGE_STRING"]="pacemaker 2.1.4" -S["PACKAGE_VERSION"]="2.1.4" -S["PACKAGE_TARNAME"]="pacemaker" -S["PACKAGE_NAME"]="pacemaker" -S["PATH_SEPARATOR"]=":" -S["SHELL"]="/bin/bash" -S["am__quote"]="" - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - diff --git a/conf5rsWZM/subs1.awk b/conf5rsWZM/subs1.awk deleted file mode 100644 index ee68bcbdf0f..00000000000 --- a/conf5rsWZM/subs1.awk +++ /dev/null @@ -1,346 +0,0 @@ -BEGIN { -S["ltdl_LTLIBOBJS"]=" lt__strl.lo" -S["ltdl_LIBOBJS"]=" lt__strl.o" -S["gltests_LTLIBOBJS"]="" -S["gltests_LIBOBJS"]="" -S["gl_LTLIBOBJS"]="" -S["gl_LIBOBJS"]="" -S["am__EXEEXT_FALSE"]="" -S["am__EXEEXT_TRUE"]="#" -S["LTLIBOBJS"]=" ${LIBOBJDIR}NoSuchFunctionName$U.lo" -S["QUIET_LIBTOOL_OPTS"]="" -S["MAKEFLAGS"]=" " -S["PCMK_FEATURES"]="corosync-ge-2 monotonic nagios" -S["LOCALE"]="" -S["CFLAGS_COPY"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ -"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ -"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection -Werror" -S["NON_FATAL_CFLAGS"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ -"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ -"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection" -S["BUILD_OPENIPMI_SERVICELOG_FALSE"]="" -S["BUILD_OPENIPMI_SERVICELOG_TRUE"]="#" -S["OPENIPMI_SERVICELOG_LIBS"]="" -S["OPENIPMI_SERVICELOG_CFLAGS"]="" -S["BUILD_SERVICELOG_FALSE"]="" -S["BUILD_SERVICELOG_TRUE"]="#" -S["SERVICELOG_LIBS"]="" -S["SERVICELOG_CFLAGS"]="" -S["BUILD_REMOTE_FALSE"]="" -S["BUILD_REMOTE_TRUE"]="#" -S["PC_NAME_GNUTLS"]="" -S["BUILD_CIBSECRETS_FALSE"]="" -S["BUILD_CIBSECRETS_TRUE"]="#" -S["LRM_CIBSECRETS_DIR"]="" -S["PC_NAME_CLUSTER"]=" libcfg libcmap libcorosync_common libcpg libquorum" -S["CLUSTERLIBS"]=" -lcpg -lqb -ldl -lcfg -lqb -ldl -lcmap -lqb -ldl -lquorum -lqb -ldl -lcorosync_common -lqb -ldl" -S["SUPPORT_COROSYNC"]="" -S["BUILD_CS_SUPPORT_FALSE"]="#" -S["BUILD_CS_SUPPORT_TRUE"]="" -S["libcorosync_common_LIBS"]="-lcorosync_common -lqb -ldl" -S["libcorosync_common_CFLAGS"]="" -S["quorum_LIBS"]="-lquorum -lqb -ldl" -S["quorum_CFLAGS"]="" -S["cmap_LIBS"]="-lcmap -lqb -ldl" -S["cmap_CFLAGS"]="" -S["cfg_LIBS"]="-lcfg -lqb -ldl" -S["cfg_CFLAGS"]="" -S["cpg_LIBS"]="-lcpg -lqb -ldl" -S["cpg_CFLAGS"]="" -S["NAGIOS_METADATA_DIR"]="/usr/share/nagios/plugins-metadata" -S["NAGIOS_PLUGIN_DIR"]="/usr/libexec/nagios/plugins" -S["BUILD_NAGIOS_FALSE"]="#" -S["BUILD_NAGIOS_TRUE"]="" -S["SUPPORT_UPSTART"]="" -S["BUILD_UPSTART_FALSE"]="" -S["BUILD_UPSTART_TRUE"]="#" -S["SUPPORT_SYSTEMD"]="" -S["BUILD_SYSTEMD_FALSE"]="" -S["BUILD_SYSTEMD_TRUE"]="#" -S["PC_NAME_DBUS"]="" -S["BUILD_DBUS_FALSE"]="" -S["BUILD_DBUS_TRUE"]="#" -S["DBUS_LIBS"]="" -S["DBUS_CFLAGS"]="" -S["BUILD_VERSION"]="c5ecab892" -S["GIT"]="/usr/bin/git" -S["PACEMAKER_CONFIG_DIR"]="/etc/pacemaker" -S["CRM_RSCTMP_DIR"]="/var/run/resource-agents" -S["CRM_STATE_DIR"]="/var/run/crm" -S["CRM_DAEMON_DIR"]="/usr/libexec/pacemaker" -S["CRM_CONFIG_DIR"]="/var/lib/pacemaker/cib" -S["PE_STATE_DIR"]="/var/lib/pacemaker/pengine" -S["CRM_BLACKBOX_DIR"]="/var/lib/pacemaker/blackbox" -S["CRM_PACEMAKER_DIR"]="/var/lib/pacemaker" -S["CRM_DAEMON_GROUP"]="haclient" -S["CRM_DAEMON_USER"]="hacluster" -S["CRM_CORE_DIR"]="/var/lib/pacemaker/cores" -S["CRM_SCHEMA_DIRECTORY"]="/usr/share/pacemaker" -S["BUILD_LHA_SUPPORT_FALSE"]="" -S["BUILD_LHA_SUPPORT_TRUE"]="#" -S["libqb_LIBS"]="-lqb -ldl" -S["libqb_CFLAGS"]="" -S["BUILD_PROFILING_FALSE"]="" -S["BUILD_PROFILING_TRUE"]="#" -S["PC_LIBS_CURSES"]="" -S["PC_NAME_CURSES"]="" -S["CURSESLIBS"]="" -S["WRAPPABLE_UNAME_FALSE"]="#" -S["WRAPPABLE_UNAME_TRUE"]="" -S["LIBXML2_LIBS"]="-lxml2" -S["LIBXML2_CFLAGS"]="-I/usr/include/libxml2" -S["GLIB_LIBS"]="-lglib-2.0" -S["GLIB_CFLAGS"]="-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include" -S["PC_LIBS_RT"]="-lrt" -S["UUID_LIBS"]="-luuid" -S["UUID_CFLAGS"]="-I/usr/include/uuid" -S["LIBOBJS"]=" ${LIBOBJDIR}NoSuchFunctionName$U.o" -S["GETOPT_PATH"]="/usr/bin/getopt" -S["BUILD_SPHINX_DOCS_FALSE"]="" -S["BUILD_SPHINX_DOCS_TRUE"]="#" -S["BUILD_ASCIIDOC_FALSE"]="" -S["BUILD_ASCIIDOC_TRUE"]="#" -S["IS_ASCIIDOC_FALSE"]="" -S["IS_ASCIIDOC_TRUE"]="#" -S["BUILD_XML_HELP_FALSE"]="" -S["BUILD_XML_HELP_TRUE"]="#" -S["MANPAGE_XSLT"]="" -S["BUILD_HELP_FALSE"]="" -S["BUILD_HELP_TRUE"]="#" -S["VALGRIND_BIN"]="/usr/bin/valgrind" -S["BASH_PATH"]="/usr/bin/bash" -S["XMLCATALOG"]="" -S["XSLTPROC"]="/usr/bin/xsltproc" -S["INKSCAPE"]="" -S["SPHINX"]="" -S["HELP2MAN"]="" -S["ASCIIDOC_CONV"]="" -S["pkgpyexecdir"]="${pyexecdir}/pacemaker" -S["pyexecdir"]="${exec_prefix}/local/lib/python3.10/dist-packages" -S["pkgpythondir"]="${pythondir}/pacemaker" -S["pythondir"]="${prefix}/local/lib/python3.10/dist-packages" -S["PYTHON_PLATFORM"]="linux" -S["PYTHON_EXEC_PREFIX"]="${exec_prefix}" -S["PYTHON_PREFIX"]="${prefix}" -S["PYTHON_VERSION"]="3.1" -S["PYTHON"]="/usr/bin/python3" -S["INIT_EXT"]="" -S["BUG_URL"]="https://bugs.clusterlabs.org/enter_bug.cgi?product=Pacemaker" -S["CRM_BUNDLE_DIR"]="/var/log/pacemaker/bundles" -S["CRM_LOG_DIR"]="/var/log/pacemaker" -S["CONFIGDIR"]="/etc/sysconfig" -S["INITDIR"]="/etc/init.d" -S["PACKAGE_SERIES"]="2.1" -S["LDFLAGS_HARDENED_EXE"]=" -Wl,-z,relro -pie -Wl,-z,now -Wl,--as-needed" -S["CFLAGS_HARDENED_EXE"]=" -fPIE" -S["LDFLAGS_HARDENED_LIB"]=" -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" -S["CFLAGS_HARDENED_LIB"]="" -S["PCMK__FENCE_BINDIR"]="/usr/sbin" -S["FA_PREFIX"]="" -S["OCF_RA_INSTALL_DIR"]="/usr/lib/ocf/resource.d" -S["OCF_RA_PATH"]="/usr/lib/ocf/resource.d" -S["OCF_ROOT_DIR"]="/usr/lib/ocf" -S["PCMK__COROSYNC_CONF"]="/usr/etc/corosync/corosync.conf" -S["POSUB"]="" -S["LTLIBINTL"]="" -S["LIBINTL"]="" -S["INTLLIBS"]="" -S["LTLIBICONV"]="-liconv" -S["LIBICONV"]="-liconv" -S["INTL_MACOSX_LIBS"]="" -S["XGETTEXT_EXTRA_OPTIONS"]="" -S["MSGMERGE"]="/usr/bin/msgmerge" -S["XGETTEXT_015"]="/usr/bin/xgettext" -S["XGETTEXT"]="/usr/bin/xgettext" -S["GMSGFMT_015"]="/usr/bin/msgfmt" -S["MSGFMT_015"]="/usr/bin/msgfmt" -S["GMSGFMT"]="/usr/bin/msgfmt" -S["MSGFMT"]="/usr/bin/msgfmt" -S["GETTEXT_MACRO_VERSION"]="0.18" -S["USE_NLS"]="no" -S["BUILD_LEGACY_LINKS_FALSE"]="" -S["BUILD_LEGACY_LINKS_TRUE"]="#" -S["systemdsystemunitdir"]="" -S["LTDLOPEN"]="libltdl" -S["LT_CONFIG_H"]="include/config.h" -S["subdirs"]=" libltdl" -S["CONVENIENCE_LTDL_FALSE"]="#" -S["CONVENIENCE_LTDL_TRUE"]="" -S["INSTALL_LTDL_FALSE"]="" -S["INSTALL_LTDL_TRUE"]="#" -S["LT_ARGZ_H"]="" -S["sys_symbol_underscore"]="no" -S["LIBADD_DL"]="-ldl" -S["LT_DLPREOPEN"]="-dlpreopen libltdl/dlopen.la " -S["LIBADD_DLD_LINK"]="" -S["LIBADD_SHL_LOAD"]="" -S["LIBADD_DLOPEN"]="-ldl" -S["LT_DLLOADERS"]=" libltdl/dlopen.la" -S["INCLTDL"]="" -S["LTDLINCL"]="" -S["LTDLDEPS"]="" -S["LIBLTDL"]="-lltdl" -S["CXXCPP"]="g++ -E" -S["LT_SYS_LIBRARY_PATH"]="" -S["OTOOL64"]="" -S["OTOOL"]="" -S["LIPO"]="" -S["NMEDIT"]="" -S["DSYMUTIL"]="" -S["MANIFEST_TOOL"]=":" -S["ac_ct_AR"]="ar" -S["DLLTOOL"]="false" -S["OBJDUMP"]="objdump" -S["LN_S"]="ln -s" -S["NM"]="/usr/bin/nm -B" -S["ac_ct_DUMPBIN"]="" -S["DUMPBIN"]="" -S["LD"]="/usr/bin/ld -m elf_x86_64" -S["FGREP"]="/usr/bin/grep -F" -S["SED"]="/usr/bin/sed" -S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool --tag=CC $(QUIET_LIBTOOL_OPTS)" -S["AM_LDFLAGS"]="-Wl,--enable-new-dtags" -S["gltests_WITNESS"]="IN_PACEMAKER_GNULIB_TESTS" -S["GL_GENERATE_STDALIGN_H_FALSE"]="" -S["GL_GENERATE_STDALIGN_H_TRUE"]="#" -S["STDALIGN_H"]="" -S["LIB_CRYPTO"]="" -S["GL_GENERATE_BYTESWAP_H_FALSE"]="" -S["GL_GENERATE_BYTESWAP_H_TRUE"]="#" -S["BYTESWAP_H"]="" -S["GL_COND_LIBTOOL_FALSE"]="#" -S["GL_COND_LIBTOOL_TRUE"]="" -S["RANLIB"]="ranlib" -S["ARFLAGS"]="cr" -S["AR"]="ar" -S["EGREP"]="/usr/bin/grep -E" -S["GREP"]="/usr/bin/grep" -S["CPP"]="gcc -E" -S["am__fastdepCXX_FALSE"]="#" -S["am__fastdepCXX_TRUE"]="" -S["CXXDEPMODE"]="depmode=gcc3" -S["ac_ct_CXX"]="g++" -S["CXXFLAGS"]="-g -O2" -S["CXX"]="g++" -S["am__fastdepCC_FALSE"]="#" -S["am__fastdepCC_TRUE"]="" -S["CCDEPMODE"]="depmode=gcc3" -S["am__nodep"]="_no" -S["AMDEPBACKSLASH"]="\\" -S["AMDEP_FALSE"]="#" -S["AMDEP_TRUE"]="" -S["am__include"]="include" -S["DEPDIR"]=".deps" -S["OBJEXT"]="o" -S["EXEEXT"]="" -S["ac_ct_CC"]="gcc" -S["CPPFLAGS"]=" -I/usr/include/uuid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libxml2 -I/usr/include/heartbeat " -S["LDFLAGS"]=" " -S["CFLAGS"]=" -g -O2 -ggdb -fgnu89-inline -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-e"\ -"qual -Wformat-security -Wimplicit-fallthrough -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpoi"\ -"nter-arith -Wwrite-strings -Wunused-but-set-variable -Wformat=2 -Wformat-nonliteral -fstack-protector-strong -fstack-clash-protection -Werror" -S["CC"]="gcc" -S["noarch_pkgconfigdir"]="${datadir}/pkgconfig" -S["pkgconfigdir"]="${libdir}/pkgconfig" -S["PKG_CONFIG_LIBDIR"]="" -S["PKG_CONFIG_PATH"]="" -S["PKG_CONFIG"]="/usr/bin/pkg-config" -S["AM_BACKSLASH"]="\\" -S["AM_DEFAULT_VERBOSITY"]="1" -S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)" -S["AM_V"]="$(V)" -S["am__untar"]="tar -xf -" -S["am__tar"]="tar --format=ustar -chf - \"$$tardir\"" -S["AMTAR"]="$${TAR-tar}" -S["am__leading_dot"]="." -S["SET_MAKE"]="" -S["AWK"]="gawk" -S["mkdir_p"]="/usr/bin/mkdir -p" -S["MKDIR_P"]="/usr/bin/mkdir -p" -S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" -S["STRIP"]="strip" -S["install_sh"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/install-sh" -S["MAKEINFO"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing makeinfo" -S["AUTOHEADER"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing autoheader" -S["AUTOMAKE"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing automake-1.16" -S["AUTOCONF"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing autoconf" -S["ACLOCAL"]="${SHELL} /home/semtagg/vscode/pacemaker/libltdl/config/missing aclocal-1.16" -S["VERSION"]="2.1.4" -S["PACKAGE"]="pacemaker" -S["CYGPATH_W"]="echo" -S["am__isrc"]="" -S["INSTALL_DATA"]="${INSTALL} -m 644" -S["INSTALL_SCRIPT"]="${INSTALL}" -S["INSTALL_PROGRAM"]="${INSTALL}" -S["host_os"]="linux-gnu" -S["host_vendor"]="pc" -S["host_cpu"]="x86_64" -S["host"]="x86_64-pc-linux-gnu" -S["build_os"]="linux-gnu" -S["build_vendor"]="pc" -S["build_cpu"]="x86_64" -S["build"]="x86_64-pc-linux-gnu" -S["target_alias"]="" -S["host_alias"]="" -S["build_alias"]="" -S["LIBS"]="-lqb -ldl -lbz2 -lxslt -lrt -ldl -luuid -lglib-2.0 -lxml2" -S["ECHO_T"]="" -S["ECHO_N"]="-n" -S["ECHO_C"]="" -S["DEFS"]="-DHAVE_CONFIG_H" -S["mandir"]="/usr/share/man" -S["localedir"]="/usr/share/locale" -S["libdir"]="/usr/lib" -S["psdir"]="${docdir}" -S["pdfdir"]="${docdir}" -S["dvidir"]="${docdir}" -S["htmldir"]="${docdir}" -S["infodir"]="/usr/share/info" -S["docdir"]="/usr/share/doc/pacemaker" -S["oldincludedir"]="/usr/include" -S["includedir"]="/usr/include" -S["runstatedir"]="/var/run" -S["localstatedir"]="/var" -S["sharedstatedir"]="/usr/com" -S["sysconfdir"]="/etc" -S["datadir"]="/usr/share" -S["datarootdir"]="${prefix}/share" -S["libexecdir"]="/usr/libexec" -S["sbindir"]="/usr/sbin" -S["bindir"]="/usr/bin" -S["program_transform_name"]="s,x,x," -S["prefix"]="/usr" -S["exec_prefix"]="/usr" -S["PACKAGE_URL"]="https://ClusterLabs.org/pacemaker/" -S["PACKAGE_BUGREPORT"]="users@clusterlabs.org" -S["PACKAGE_STRING"]="pacemaker 2.1.4" -S["PACKAGE_VERSION"]="2.1.4" -S["PACKAGE_TARNAME"]="pacemaker" -S["PACKAGE_NAME"]="pacemaker" -S["PATH_SEPARATOR"]=":" -S["SHELL"]="/bin/bash" -S["am__quote"]="" - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 231f0e88c4f..59f44096699 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1009,7 +1009,6 @@ action_launch_child(svc_action_t *op) // An earlier stat() should have avoided most possible errors rc = errno; - crm_info("PCMK_NOT_INSTALLED - action_launch_child, action - '%s'", op->action); services__handle_exec_error(op, rc); crm_err("Unable to execute %s: %s", op->id, strerror(rc)); exit_child(op, op->rc, "Child process was unable to execute file"); @@ -1357,6 +1356,7 @@ services__execute_file(svc_action_t *op) &stderr_callbacks); services_add_inflight_op(op); return pcmk_rc_ok; + done: if (op->synchronous) { return (op->rc == PCMK_OCF_OK)? pcmk_rc_ok : pcmk_rc_error; From 21c00c5d7b39770ab2e4505097ddc191743a0a6e Mon Sep 17 00:00:00 2001 From: semtagg Date: Wed, 22 Feb 2023 00:04:35 +0300 Subject: [PATCH 16/48] wip --- include/crm/services.h | 1 + lib/services/services.c | 12 ++++++++++++ lib/services/services_dlopen.c | 0 lib/services/services_dlopen.h | 14 ++++++++++++++ 4 files changed, 27 insertions(+) create mode 100644 lib/services/services_dlopen.c create mode 100644 lib/services/services_dlopen.h diff --git a/include/crm/services.h b/include/crm/services.h index dcd28d348f4..4715cb885fe 100644 --- a/include/crm/services.h +++ b/include/crm/services.h @@ -44,6 +44,7 @@ extern "C" { #define PCMK_RESOURCE_CLASS_NAGIOS "nagios" #define PCMK_RESOURCE_CLASS_STONITH "stonith" #define PCMK_RESOURCE_CLASS_ALERT "alert" +#define PCMK_RESOURCE_CLASS_DLOPEN "dlopen" /* This is the string passed in the OCF_EXIT_REASON_PREFIX environment variable. * The stderr output that occurs after this prefix is encountered is considered diff --git a/lib/services/services.c b/lib/services/services.c index 99d89091438..16789cd982c 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -30,6 +30,7 @@ #include "services_private.h" #include "services_ocf.h" #include "services_lsb.h" +#include "services_dlopen.h" #if SUPPORT_UPSTART # include @@ -305,6 +306,8 @@ services__create_resource_action(const char *name, const char *standard, } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_LSB) == 0) { rc = services__lsb_prepare(op); + } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_DLOPEN) == 0) { + rc = services__dlopen_prepare(op); #if SUPPORT_SYSTEMD } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_SYSTEMD) == 0) { @@ -574,6 +577,10 @@ services_result2ocf(const char *standard, const char *action, int exit_status) pcmk__str_casei)) { return services__lsb2ocf(action, exit_status); + } else if (pcmk__str_eq(standard, PCMK_RESOURCE_CLASS_DLOPEN, + pcmk__str_casei)) { + return services__dlopen2ocf(action, exit_status); + } else { crm_warn("Treating result from unknown standard '%s' as OCF", ((standard == NULL)? "unspecified" : standard)); @@ -1154,6 +1161,8 @@ resources_list_agents(const char *standard, const char *provider) return resources_os_list_ocf_agents(provider); } else if (strcasecmp(standard, PCMK_RESOURCE_CLASS_LSB) == 0) { return services__list_lsb_agents(); + } else if (strcasecmp(standard, PCMK_RESOURCE_CLASS_DLOPEN) == 0) { + return services__list_dlopen_agents(); #if SUPPORT_SYSTEMD } else if (strcasecmp(standard, PCMK_RESOURCE_CLASS_SYSTEMD) == 0) { return systemd_unit_listall(); @@ -1233,6 +1242,9 @@ resources_agent_exists(const char *standard, const char *provider, const char *a } else if (pcmk__str_eq(standard, PCMK_RESOURCE_CLASS_LSB, pcmk__str_casei)) { rc = services__lsb_agent_exists(agent); + } else if (pcmk__str_eq(standard, PCMK_RESOURCE_CLASS_DLOPEN, pcmk__str_casei)) { + rc = services__dlopen_agent_exists(agent); + #if SUPPORT_SYSTEMD } else if (pcmk__str_eq(standard, PCMK_RESOURCE_CLASS_SYSTEMD, pcmk__str_casei)) { rc = systemd_unit_exists(agent); diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/services/services_dlopen.h b/lib/services/services_dlopen.h new file mode 100644 index 00000000000..297b3534570 --- /dev/null +++ b/lib/services/services_dlopen.h @@ -0,0 +1,14 @@ +#ifndef SERVICES_DLOPEN__H +# define SERVICES_DLOPEN__H + +#include + +G_GNUC_INTERNAL int services__get_dlopen_metadata(const char *type, char **output); // +G_GNUC_INTERNAL GList *services__list_dlopen_agents(void); +G_GNUC_INTERNAL bool services__dlopen_agent_exists(const char *agent); +G_GNUC_INTERNAL int services__dlopen_prepare(svc_action_t *op); + +G_GNUC_INTERNAL +enum ocf_exitcode services__dlopen2ocf(const char *action, int exit_status); + +#endif \ No newline at end of file From d53977ac7431380c0555eb6ef4cfc93b103f9b05 Mon Sep 17 00:00:00 2001 From: semtagg Date: Wed, 22 Feb 2023 17:52:18 +0300 Subject: [PATCH 17/48] wip --- lib/services/services_dlopen.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/services/services_dlopen.h b/lib/services/services_dlopen.h index 297b3534570..2e533631c59 100644 --- a/lib/services/services_dlopen.h +++ b/lib/services/services_dlopen.h @@ -3,12 +3,12 @@ #include -G_GNUC_INTERNAL int services__get_dlopen_metadata(const char *type, char **output); // -G_GNUC_INTERNAL GList *services__list_dlopen_agents(void); -G_GNUC_INTERNAL bool services__dlopen_agent_exists(const char *agent); -G_GNUC_INTERNAL int services__dlopen_prepare(svc_action_t *op); +G_GNUC_INTERNAL int services__get_dlopen_metadata(const char *type, char **output); // ??? +G_GNUC_INTERNAL GList *services__list_dlopen_agents(void); // + +G_GNUC_INTERNAL bool services__dlopen_agent_exists(const char *agent); // + + +G_GNUC_INTERNAL int services__dlopen_prepare(svc_action_t *op); // + G_GNUC_INTERNAL -enum ocf_exitcode services__dlopen2ocf(const char *action, int exit_status); +enum ocf_exitcode services__dlopen2ocf(const char *action, int exit_status); // + #endif \ No newline at end of file From a100973660594dc24562bf7c303e26c40ad4e796 Mon Sep 17 00:00:00 2001 From: semtagg Date: Wed, 22 Feb 2023 18:42:45 +0300 Subject: [PATCH 18/48] wip --- .vscode/settings.json | 5 ++++ lib/services/services.c | 2 +- lib/services/services_dlopen.c | 52 ++++++++++++++++++++++++++++++++++ lib/services/services_dlopen.h | 10 +++---- 4 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000000..174bd81f093 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "services_private.h": "c" + } +} \ No newline at end of file diff --git a/lib/services/services.c b/lib/services/services.c index 16789cd982c..f6e1ca046a6 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -579,7 +579,7 @@ services_result2ocf(const char *standard, const char *action, int exit_status) } else if (pcmk__str_eq(standard, PCMK_RESOURCE_CLASS_DLOPEN, pcmk__str_casei)) { - return services__dlopen2ocf(action, exit_status); + return services__dlopen2ocf(exit_status); } else { crm_warn("Treating result from unknown standard '%s' as OCF", diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index e69de29bb2d..4d5f3166217 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -0,0 +1,52 @@ +#include + +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif + +#include +#include +#include + +#include +#include +#include "services_private.h" +#include "services_dlopen.h" + +#define PCMK_DLOPEN_DIR "/usr/lib/dlopen" // or "/usr/lib/dlopen/" + +GList * +services__list_dlopen_agents(void) +{ + return services_os_get_directory_list(PCMK_DLOPEN_DIR, TRUE, FALSE); +} + +bool +services__dlopen_agent_exists(const char *agent) +{ + bool rc = FALSE; + struct stat st; + char *path = pcmk__full_path(agent, PCMK_DLOPEN_DIR); + + rc = (stat(path, &st) == 0); + free(path); + return rc; +} + +int +services__dlopen_prepare(svc_action_t *op) +{ + op->opaque->exec = pcmk__full_path(op->agent, PCMK_DLOPEN_DIR); + op->opaque->args[0] = strdup(op->opaque->exec); + op->opaque->args[1] = strdup(op->action); + if ((op->opaque->args[0] == NULL) || (op->opaque->args[1] == NULL)) { + return ENOMEM; + } + return pcmk_rc_ok; +} + +enum ocf_exitcode +services__dlopen2ocf(int exit_status) +{ + return (enum ocf_exitcode) exit_status; +} diff --git a/lib/services/services_dlopen.h b/lib/services/services_dlopen.h index 2e533631c59..2455a45f7a6 100644 --- a/lib/services/services_dlopen.h +++ b/lib/services/services_dlopen.h @@ -3,12 +3,12 @@ #include -G_GNUC_INTERNAL int services__get_dlopen_metadata(const char *type, char **output); // ??? -G_GNUC_INTERNAL GList *services__list_dlopen_agents(void); // + -G_GNUC_INTERNAL bool services__dlopen_agent_exists(const char *agent); // + + -G_GNUC_INTERNAL int services__dlopen_prepare(svc_action_t *op); // + +// G_GNUC_INTERNAL int services__get_dlopen_metadata(const char *type, char **output); +G_GNUC_INTERNAL GList *services__list_dlopen_agents(void); +G_GNUC_INTERNAL bool services__dlopen_agent_exists(const char *agent); +G_GNUC_INTERNAL int services__dlopen_prepare(svc_action_t *op); G_GNUC_INTERNAL -enum ocf_exitcode services__dlopen2ocf(const char *action, int exit_status); // + +enum ocf_exitcode services__dlopen2ocf(int exit_status); #endif \ No newline at end of file From fd4b33908b15c9fec06d9582500d135e2ba12052 Mon Sep 17 00:00:00 2001 From: semtagg Date: Thu, 23 Feb 2023 14:18:58 +0300 Subject: [PATCH 19/48] added new agents class --- lib/services/Makefile.am | 2 ++ lib/services/services_linux.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/services/Makefile.am b/lib/services/Makefile.am index 0c65b281a0c..ddcd8971618 100644 --- a/lib/services/Makefile.am +++ b/lib/services/Makefile.am @@ -15,6 +15,7 @@ lib_LTLIBRARIES = libcrmservice.la noinst_HEADERS = pcmk-dbus.h upstart.h systemd.h \ services_lsb.h services_nagios.h \ services_ocf.h \ + services_dlopen.h \ services_private.h libcrmservice_la_LDFLAGS = -version-info 31:0:3 @@ -29,6 +30,7 @@ libcrmservice_la_SOURCES = services.c libcrmservice_la_SOURCES += services_linux.c libcrmservice_la_SOURCES += services_lsb.c libcrmservice_la_SOURCES += services_ocf.c +libcrmservice_la_SOURCES += services_dlopen.c if BUILD_DBUS libcrmservice_la_SOURCES += dbus.c endif diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 59f44096699..8f4b2249b90 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1451,7 +1451,7 @@ services__execute_file_as_plugin(svc_action_t *op) { int (*exec)(int, int, char *); char *lib_error; int exec_status; - char dst[200] = "/usr/lib/ocf/resource.d/heartbeat/"; + char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); handle = dlopen (dst, RTLD_NOW | RTLD_LOCAL); From 9a9855d53b9ff79464d0f177fe0c5ad77540734f Mon Sep 17 00:00:00 2001 From: root Date: Wed, 8 Mar 2023 13:27:25 +0000 Subject: [PATCH 20/48] added support for params instead of env --- lib/lrmd/lrmd_client.c | 2 + lib/services/services.c | 8 +- lib/services/services_linux.c | 146 ++++++++++++++++---------------- lib/services/services_private.h | 4 + 4 files changed, 82 insertions(+), 78 deletions(-) diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index f6b797d675e..6b3c6822f0a 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -1969,6 +1969,7 @@ lrmd_api_get_metadata_params(lrmd_t *lrmd, const char *standard, } if (!services_action_sync(action)) { + crm_info("First"); crm_err("Failed to retrieve meta-data for %s:%s:%s", standard, provider, type); services_action_free(action); @@ -1976,6 +1977,7 @@ lrmd_api_get_metadata_params(lrmd_t *lrmd, const char *standard, } if (!action->stdout_data) { + crm_info("Second"); crm_err("Failed to receive meta-data for %s:%s:%s", standard, provider, type); services_action_free(action); diff --git a/lib/services/services.c b/lib/services/services.c index f6e1ca046a6..56c68079f49 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -276,10 +276,12 @@ services__create_resource_action(const char *name, const char *standard, op->sequence = ++operations; // Take ownership of params - if (pcmk_is_set(ra_caps, pcmk_ra_cap_params)) { - op->params = params; + crm_info("Stanard %s", standard); + if (pcmk_is_set(ra_caps, pcmk_ra_cap_params) || strcasecmp(standard, PCMK_RESOURCE_CLASS_DLOPEN) == 0) { + op->params = params; } else if (params != NULL) { - g_hash_table_destroy(params); + crm_info("Wtf"); + g_hash_table_destroy(params); params = NULL; } diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 8f4b2249b90..01213ae3939 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1178,8 +1178,12 @@ services__execute_file(svc_action_t *op) struct stat st; struct sigchld_data_s data; - if (services__execute_file_as_plugin(op) == pcmk_rc_ok){ - return pcmk_rc_ok; + if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_DLOPEN) == 0) { + if (strcasecmp(op->action, "meta-data") == 0) { + return services__execute_file_as_plugin_metadata(op); + } + + return services__execute_file_as_plugin(op); } // Catch common failure conditions early @@ -1447,99 +1451,91 @@ services_os_get_directory_list(const char *root, gboolean files, gboolean execut int services__execute_file_as_plugin(svc_action_t *op) { - void *handle; - int (*exec)(int, int, char *); + void *lib; char *lib_error; - int exec_status; + int (*exec)(GHashTable *); char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); - handle = dlopen (dst, RTLD_NOW | RTLD_LOCAL); + g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); + lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL); - if (!handle) { - // можно что-то залогировать + if (!lib) { return pcmk_rc_error; } else { - // можно что-то залогировать - exec = dlsym(handle, "handler"); + exec = dlsym(lib, op->action); if ((lib_error = dlerror()) != NULL){ free(lib_error); - // можно что-то залогировать - // ситуация, когда мы смогли открыть агента - // как разделяемую библиотеку, но не нашли - // нужного метода (что-то странное) return pcmk_rc_error; } else { - char num[10]; - int out_fd; - int err_fd; - char out_file_name[100] = "outfd-"; - char err_file_name[100] = "errfd-"; - - add_action_env_vars(op); - - sprintf(num, "%d", getpid()); - strcat(out_file_name, num); - strcat(err_file_name, num); - - out_fd = memfd_create(out_file_name, MFD_ALLOW_SEALING); - err_fd = memfd_create(err_file_name, MFD_ALLOW_SEALING); - - exec_status = exec(out_fd, err_fd, op->action); - { - int size_out = lseek(out_fd, 0, SEEK_END); // SEEK_CUR ? - int size_err = lseek(err_fd, 0, SEEK_END); - if (size_out > 0) { - char *buf_out = (char *)malloc(sizeof(char) * (size_out + 1)); - lseek(out_fd, 0, SEEK_SET); - if (read(out_fd, buf_out, size_out) >= 0) { - buf_out[size_out] = '\0'; - op->stdout_data = buf_out; - } + op->rc = exec(op->params); + op->status = PCMK_EXEC_DONE; + op->pid = 0; + if (op->interval_ms != 0) { + // Recurring operations must be either cancelled or rescheduled + if (op->cancel) { + services__set_cancelled(op); + cancel_recurring_action(op); } else { - op->stdout_data = NULL; + op->opaque->repeat_timer = g_timeout_add(op->interval_ms, + recurring_action_timer, + (void *) op); } + } - if (size_err > 0) { - char *buf_err = (char *)malloc(sizeof(char) * (size_err + 1)); - lseek(err_fd, 0, SEEK_SET); - if (read(err_fd, buf_err, size_err) >= 0) { - buf_err[size_err] = '\0'; - op->stderr_data = buf_err; - } - } else { - op->stderr_data = NULL; - } + if (op->opaque->callback) { + op->opaque->callback(op); + } - if (close(out_fd) < 0) { - crm_info("Error '%s'", "a"); - } - if (close(err_fd) < 0) { - crm_info("Error 's'", "b"); - } + dlclose(lib); + return pcmk_rc_ok; + } + } +} - op->rc = exec_status; - op->status = PCMK_EXEC_DONE; - op->pid = 0; - if (op->interval_ms != 0) { - // Recurring operations must be either cancelled or rescheduled - if (op->cancel) { - services__set_cancelled(op); - cancel_recurring_action(op); - } else { - op->opaque->repeat_timer = g_timeout_add(op->interval_ms, - recurring_action_timer, - (void *) op); - } - } - if (op->opaque->callback) { - op->opaque->callback(op); +int +services__execute_file_as_plugin_metadata(svc_action_t *op) { + void *lib; + char *lib_error; + int (*exec)(GHashTable *, char **); + char dst[200] = "/usr/lib/dlopen/"; + strcat(dst, op->agent); + g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); + lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL); + + if (!lib) { + return pcmk_rc_error; + } else { + exec = dlsym(lib, "metadata"); + + if ((lib_error = dlerror()) != NULL){ + free(lib_error); + + return pcmk_rc_error; + } else { + op->rc = exec(op->params, &op->stdout_data); + op->status = PCMK_EXEC_DONE; + op->pid = 0; + if (op->interval_ms != 0) { + // Recurring operations must be either cancelled or rescheduled + if (op->cancel) { + services__set_cancelled(op); + cancel_recurring_action(op); + } else { + op->opaque->repeat_timer = g_timeout_add(op->interval_ms, + recurring_action_timer, + (void *) op); } } - dlclose(handle); + + if (op->opaque->callback) { + op->opaque->callback(op); + } + + dlclose(lib); return pcmk_rc_ok; - //dlclose(handle); } } } + diff --git a/lib/services/services_private.h b/lib/services/services_private.h index 2b95ba09c94..5e4d0c3db8c 100644 --- a/lib/services/services_private.h +++ b/lib/services/services_private.h @@ -1,4 +1,5 @@ /* + } * Copyright 2010-2011 Red Hat, Inc. * Later changes copyright 2012-2021 the Pacemaker project contributors * @@ -60,6 +61,9 @@ int services__execute_file(svc_action_t *op); G_GNUC_INTERNAL int services__execute_file_as_plugin(svc_action_t *op); +G_GNUC_INTERNAL +int services__execute_file_as_plugin_metadata(svc_action_t *op); + G_GNUC_INTERNAL gboolean cancel_recurring_action(svc_action_t * op); From 36490da8501a98599ceeeff58856396ebf876a07 Mon Sep 17 00:00:00 2001 From: semtagg Date: Wed, 8 Mar 2023 19:58:49 +0300 Subject: [PATCH 21/48] wip --- lib/services/services.c | 5 ++ lib/services/services_dlopen.c | 100 +++++++++++++++++++++++++++++++++ lib/services/services_dlopen.h | 9 +++ lib/services/services_linux.c | 99 -------------------------------- 4 files changed, 114 insertions(+), 99 deletions(-) diff --git a/lib/services/services.c b/lib/services/services.c index 56c68079f49..90be1423aa5 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -823,6 +823,11 @@ handle_duplicate_recurring(svc_action_t * op) static int execute_action(svc_action_t *op) { + if (pcmk__str_eq(op->standard, PCMK_RESOURCE_CLASS_DLOPEN, + pcmk__str_casei)) { + return services__execute_upstart(op); + } + #if SUPPORT_UPSTART if (pcmk__str_eq(op->standard, PCMK_RESOURCE_CLASS_UPSTART, pcmk__str_casei)) { diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 4d5f3166217..8035d3c6fc0 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -45,8 +45,108 @@ services__dlopen_prepare(svc_action_t *op) return pcmk_rc_ok; } +// TODO: enum ocf_exitcode services__dlopen2ocf(int exit_status) { return (enum ocf_exitcode) exit_status; } + +int +services__execute_dlopen(svc_action_t *op) { + if (strcasecmp(op->action, "meta-data") == 0) { + return services__execute_file_as_plugin_metadata(op); + } + + return services__execute_file_as_plugin(op); +} + +int +services__execute_dlopen_metadata(svc_action_t *op) { + void *lib; + char *lib_error; + int (*exec)(GHashTable *, char **); + char dst[200] = "/usr/lib/dlopen/"; + strcat(dst, op->agent); + g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); + lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL); + + if (!lib) { + return pcmk_rc_error; + } else { + exec = dlsym(lib, "metadata"); + + if ((lib_error = dlerror()) != NULL){ + free(lib_error); + + return pcmk_rc_error; + } else { + op->rc = exec(op->params, &op->stdout_data); + op->status = PCMK_EXEC_DONE; + op->pid = 0; + if (op->interval_ms != 0) { + // Recurring operations must be either cancelled or rescheduled + if (op->cancel) { + services__set_cancelled(op); + cancel_recurring_action(op); + } else { + op->opaque->repeat_timer = g_timeout_add(op->interval_ms, + recurring_action_timer, + (void *) op); + } + } + + if (op->opaque->callback) { + op->opaque->callback(op); + } + + dlclose(lib); + return pcmk_rc_ok; + } + } +} + +int +services__execute_dlopen_action(svc_action_t *op) { + void *lib; + char *lib_error; + int (*exec)(GHashTable *); + char dst[200] = "/usr/lib/dlopen/"; + strcat(dst, op->agent); + g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); + lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL); + + if (!lib) { + return pcmk_rc_error; + } else { + exec = dlsym(lib, op->action); + + if ((lib_error = dlerror()) != NULL){ + free(lib_error); + + return pcmk_rc_error; + } else { + op->rc = exec(op->params); + op->status = PCMK_EXEC_DONE; + op->pid = 0; + if (op->interval_ms != 0) { + // Recurring operations must be either cancelled or rescheduled + if (op->cancel) { + services__set_cancelled(op); + cancel_recurring_action(op); + } else { + op->opaque->repeat_timer = g_timeout_add(op->interval_ms, + recurring_action_timer, + (void *) op); + } + } + + if (op->opaque->callback) { + op->opaque->callback(op); + } + + dlclose(lib); + return pcmk_rc_ok; + } + } +} diff --git a/lib/services/services_dlopen.h b/lib/services/services_dlopen.h index 2455a45f7a6..3784db159b5 100644 --- a/lib/services/services_dlopen.h +++ b/lib/services/services_dlopen.h @@ -11,4 +11,13 @@ G_GNUC_INTERNAL int services__dlopen_prepare(svc_action_t *op); G_GNUC_INTERNAL enum ocf_exitcode services__dlopen2ocf(int exit_status); +G_GNUC_INTERNAL +int services__execute_dlopen(svc_action_t *op); + +G_GNUC_INTERNAL +int services__execute_dlopen_metadata(svc_action_t *op); + +G_GNUC_INTERNAL +int services__execute_dlopen_action(svc_action_t *op); + #endif \ No newline at end of file diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 01213ae3939..9ee8b87699e 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1178,14 +1178,6 @@ services__execute_file(svc_action_t *op) struct stat st; struct sigchld_data_s data; - if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_DLOPEN) == 0) { - if (strcasecmp(op->action, "meta-data") == 0) { - return services__execute_file_as_plugin_metadata(op); - } - - return services__execute_file_as_plugin(op); - } - // Catch common failure conditions early if (stat(op->opaque->exec, &st) != 0) { rc = errno; @@ -1448,94 +1440,3 @@ services_os_get_directory_list(const char *root, gboolean files, gboolean execut return result; } - -int -services__execute_file_as_plugin(svc_action_t *op) { - void *lib; - char *lib_error; - int (*exec)(GHashTable *); - char dst[200] = "/usr/lib/dlopen/"; - strcat(dst, op->agent); - g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); - lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL); - - if (!lib) { - return pcmk_rc_error; - } else { - exec = dlsym(lib, op->action); - - if ((lib_error = dlerror()) != NULL){ - free(lib_error); - - return pcmk_rc_error; - } else { - op->rc = exec(op->params); - op->status = PCMK_EXEC_DONE; - op->pid = 0; - if (op->interval_ms != 0) { - // Recurring operations must be either cancelled or rescheduled - if (op->cancel) { - services__set_cancelled(op); - cancel_recurring_action(op); - } else { - op->opaque->repeat_timer = g_timeout_add(op->interval_ms, - recurring_action_timer, - (void *) op); - } - } - - if (op->opaque->callback) { - op->opaque->callback(op); - } - - dlclose(lib); - return pcmk_rc_ok; - } - } -} - -int -services__execute_file_as_plugin_metadata(svc_action_t *op) { - void *lib; - char *lib_error; - int (*exec)(GHashTable *, char **); - char dst[200] = "/usr/lib/dlopen/"; - strcat(dst, op->agent); - g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); - lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL); - - if (!lib) { - return pcmk_rc_error; - } else { - exec = dlsym(lib, "metadata"); - - if ((lib_error = dlerror()) != NULL){ - free(lib_error); - - return pcmk_rc_error; - } else { - op->rc = exec(op->params, &op->stdout_data); - op->status = PCMK_EXEC_DONE; - op->pid = 0; - if (op->interval_ms != 0) { - // Recurring operations must be either cancelled or rescheduled - if (op->cancel) { - services__set_cancelled(op); - cancel_recurring_action(op); - } else { - op->opaque->repeat_timer = g_timeout_add(op->interval_ms, - recurring_action_timer, - (void *) op); - } - } - - if (op->opaque->callback) { - op->opaque->callback(op); - } - - dlclose(lib); - return pcmk_rc_ok; - } - } -} - From 13032c7bf12e57633955d9c7d52b0589a608c466 Mon Sep 17 00:00:00 2001 From: semtagg Date: Wed, 8 Mar 2023 20:00:46 +0300 Subject: [PATCH 22/48] fix --- lib/services/services.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/services/services.c b/lib/services/services.c index 90be1423aa5..57581f59894 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -825,7 +825,7 @@ execute_action(svc_action_t *op) { if (pcmk__str_eq(op->standard, PCMK_RESOURCE_CLASS_DLOPEN, pcmk__str_casei)) { - return services__execute_upstart(op); + return services__execute_dlopen(op); } #if SUPPORT_UPSTART From 0d0800f19eabe9422c9cfe3e431d5fc6d302f7ce Mon Sep 17 00:00:00 2001 From: semtagg Date: Wed, 8 Mar 2023 20:17:09 +0300 Subject: [PATCH 23/48] fix --- lib/services/services_dlopen.c | 4 +++- lib/services/services_private.h | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 8035d3c6fc0..518b2d6cbe0 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -7,9 +7,11 @@ #include #include #include - +#include #include #include +#include +#include #include "services_private.h" #include "services_dlopen.h" diff --git a/lib/services/services_private.h b/lib/services/services_private.h index 5e4d0c3db8c..d4e6a540efb 100644 --- a/lib/services/services_private.h +++ b/lib/services/services_private.h @@ -1,5 +1,4 @@ /* - } * Copyright 2010-2011 Red Hat, Inc. * Later changes copyright 2012-2021 the Pacemaker project contributors * From d3bb841db77e052305e2141b1fb3fc6c4327016d Mon Sep 17 00:00:00 2001 From: semtagg Date: Wed, 8 Mar 2023 20:19:52 +0300 Subject: [PATCH 24/48] fix --- lib/services/services_dlopen.c | 4 ++-- lib/services/services_private.h | 6 ------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 518b2d6cbe0..bc8c019ebc6 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -57,10 +57,10 @@ services__dlopen2ocf(int exit_status) int services__execute_dlopen(svc_action_t *op) { if (strcasecmp(op->action, "meta-data") == 0) { - return services__execute_file_as_plugin_metadata(op); + return services__execute_dlopen_metadata(op); } - return services__execute_file_as_plugin(op); + return services__execute_dlopen_action(op); } int diff --git a/lib/services/services_private.h b/lib/services/services_private.h index d4e6a540efb..7285fc33f83 100644 --- a/lib/services/services_private.h +++ b/lib/services/services_private.h @@ -57,12 +57,6 @@ GList *services_os_get_directory_list(const char *root, gboolean files, gboolean G_GNUC_INTERNAL int services__execute_file(svc_action_t *op); -G_GNUC_INTERNAL -int services__execute_file_as_plugin(svc_action_t *op); - -G_GNUC_INTERNAL -int services__execute_file_as_plugin_metadata(svc_action_t *op); - G_GNUC_INTERNAL gboolean cancel_recurring_action(svc_action_t * op); From 12df80bc7f8304054e5d9711a0501145d426e006 Mon Sep 17 00:00:00 2001 From: semtagg Date: Wed, 15 Mar 2023 14:48:17 +0300 Subject: [PATCH 25/48] added RTLD_NODELETE flag --- lib/services/services_dlopen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index bc8c019ebc6..1f54d8ffdf7 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -71,7 +71,7 @@ services__execute_dlopen_metadata(svc_action_t *op) { char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); - lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL); + lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); if (!lib) { return pcmk_rc_error; From 9f4286ff29a1c6e089e5bf86231b62bddc2509e3 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 15 Mar 2023 17:04:17 +0000 Subject: [PATCH 26/48] wip --- lib/services/services.c | 6 ++---- lib/services/services_dlopen.c | 16 +++++++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/services/services.c b/lib/services/services.c index 57581f59894..c82a8c7642e 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -276,12 +276,10 @@ services__create_resource_action(const char *name, const char *standard, op->sequence = ++operations; // Take ownership of params - crm_info("Stanard %s", standard); if (pcmk_is_set(ra_caps, pcmk_ra_cap_params) || strcasecmp(standard, PCMK_RESOURCE_CLASS_DLOPEN) == 0) { - op->params = params; + op->params = params; } else if (params != NULL) { - crm_info("Wtf"); - g_hash_table_destroy(params); + g_hash_table_destroy(params); params = NULL; } diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 1f54d8ffdf7..7e5e10bf7fe 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -67,7 +67,8 @@ int services__execute_dlopen_metadata(svc_action_t *op) { void *lib; char *lib_error; - int (*exec)(GHashTable *, char **); + char *error; + int (*exec)(GHashTable *, char **, char **); char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); @@ -83,7 +84,7 @@ services__execute_dlopen_metadata(svc_action_t *op) { return pcmk_rc_error; } else { - op->rc = exec(op->params, &op->stdout_data); + op->rc = exec(op->params, &op->stdout_data, &error); op->status = PCMK_EXEC_DONE; op->pid = 0; if (op->interval_ms != 0) { @@ -102,6 +103,8 @@ services__execute_dlopen_metadata(svc_action_t *op) { op->opaque->callback(op); } + crm_info("Exit code: %d, error: %s", op->rc, error); + dlclose(lib); return pcmk_rc_ok; } @@ -112,11 +115,12 @@ int services__execute_dlopen_action(svc_action_t *op) { void *lib; char *lib_error; - int (*exec)(GHashTable *); + char *error; + int (*exec)(GHashTable *, char **); char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); - lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL); + lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); if (!lib) { return pcmk_rc_error; @@ -128,7 +132,7 @@ services__execute_dlopen_action(svc_action_t *op) { return pcmk_rc_error; } else { - op->rc = exec(op->params); + op->rc = exec(op->params, &error); op->status = PCMK_EXEC_DONE; op->pid = 0; if (op->interval_ms != 0) { @@ -147,6 +151,8 @@ services__execute_dlopen_action(svc_action_t *op) { op->opaque->callback(op); } + crm_info("Exit code: %d, error: %s", op->rc, error); + dlclose(lib); return pcmk_rc_ok; } From 54bfed4f1f8b78b70de40df0def227925fa0245e Mon Sep 17 00:00:00 2001 From: semtagg Date: Fri, 17 Mar 2023 11:06:47 +0300 Subject: [PATCH 27/48] wip --- lib/pacemaker/pcmk_injections.c | 3 ++- lib/services/services.c | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 895003435e7..2186b3ad3d0 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -377,7 +377,8 @@ pcmk__inject_resource_history(pcmk__output_t *out, xmlNode *cib_node, PCMK_RESOURCE_CLASS_SERVICE, PCMK_RESOURCE_CLASS_UPSTART, PCMK_RESOURCE_CLASS_SYSTEMD, - PCMK_RESOURCE_CLASS_LSB, NULL)) { + PCMK_RESOURCE_CLASS_LSB, + PCMK_RESOURCE_CLASS_DLOPEN, NULL)) { out->err(out, "Invalid class for %s: %s", resource, rclass); return NULL; diff --git a/lib/services/services.c b/lib/services/services.c index c82a8c7642e..10c9dc2f0ba 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -303,7 +303,6 @@ services__create_resource_action(const char *name, const char *standard, if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_OCF) == 0) { rc = services__ocf_prepare(op); - } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_LSB) == 0) { rc = services__lsb_prepare(op); } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_DLOPEN) == 0) { From 1f10387217608582b51909936a5f07c1afa3885d Mon Sep 17 00:00:00 2001 From: semtagg Date: Fri, 17 Mar 2023 11:23:07 +0300 Subject: [PATCH 28/48] ra_caps --- lib/common/agents.c | 3 +++ lib/services/services.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/common/agents.c b/lib/common/agents.c index cde029f579e..14a80fde248 100644 --- a/lib/common/agents.c +++ b/lib/common/agents.c @@ -40,6 +40,9 @@ pcmk_get_ra_caps(const char *standard) return pcmk_ra_cap_provider | pcmk_ra_cap_params | pcmk_ra_cap_unique | pcmk_ra_cap_promotable; + } else if (!strcasecmp(standard, PCMK_RESOURCE_CLASS_DLOPEN)) { + return pcmk_ra_cap_params; + } else if (!strcasecmp(standard, PCMK_RESOURCE_CLASS_STONITH)) { /* @COMPAT Stonith resources can't really be unique clones, but we've * allowed it in the past and have it in some scheduler regression tests diff --git a/lib/services/services.c b/lib/services/services.c index 10c9dc2f0ba..79f391dd736 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -276,7 +276,7 @@ services__create_resource_action(const char *name, const char *standard, op->sequence = ++operations; // Take ownership of params - if (pcmk_is_set(ra_caps, pcmk_ra_cap_params) || strcasecmp(standard, PCMK_RESOURCE_CLASS_DLOPEN) == 0) { + if (pcmk_is_set(ra_caps, pcmk_ra_cap_params)) { op->params = params; } else if (params != NULL) { g_hash_table_destroy(params); From d110afa7f70876a89c6f89d0a97215d7d1c95002 Mon Sep 17 00:00:00 2001 From: semtagg Date: Fri, 17 Mar 2023 11:26:00 +0300 Subject: [PATCH 29/48] clean --- lib/lrmd/lrmd_client.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 6b3c6822f0a..f6b797d675e 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -1969,7 +1969,6 @@ lrmd_api_get_metadata_params(lrmd_t *lrmd, const char *standard, } if (!services_action_sync(action)) { - crm_info("First"); crm_err("Failed to retrieve meta-data for %s:%s:%s", standard, provider, type); services_action_free(action); @@ -1977,7 +1976,6 @@ lrmd_api_get_metadata_params(lrmd_t *lrmd, const char *standard, } if (!action->stdout_data) { - crm_info("Second"); crm_err("Failed to receive meta-data for %s:%s:%s", standard, provider, type); services_action_free(action); From bd1f18912e2f50fd2cdbe12e9e022548b2d4a010 Mon Sep 17 00:00:00 2001 From: semtagg Date: Fri, 17 Mar 2023 11:27:57 +0300 Subject: [PATCH 30/48] wip --- lib/services/services.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/services/services.c b/lib/services/services.c index 79f391dd736..a5fe8056b17 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -303,8 +303,10 @@ services__create_resource_action(const char *name, const char *standard, if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_OCF) == 0) { rc = services__ocf_prepare(op); + } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_LSB) == 0) { rc = services__lsb_prepare(op); + } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_DLOPEN) == 0) { rc = services__dlopen_prepare(op); From d608db9c86fc5402d8db39e01074b14d06fb81af Mon Sep 17 00:00:00 2001 From: semtagg Date: Fri, 17 Mar 2023 11:29:55 +0300 Subject: [PATCH 31/48] clean --- lib/services/services_linux.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 9ee8b87699e..391bca2565c 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -19,13 +19,10 @@ #include #include #include -#include #include #include #include #include -#include -#include #include "crm/crm.h" From 52638cfb9f0fa063e38a2e29a5db14170b7cc6a5 Mon Sep 17 00:00:00 2001 From: semtagg Date: Fri, 17 Mar 2023 11:30:37 +0300 Subject: [PATCH 32/48] clean --- lib/services/services_linux.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 391bca2565c..8dbcc6d2590 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -24,7 +24,6 @@ #include #include - #include "crm/crm.h" #include "crm/common/mainloop.h" #include "crm/services.h" From 76b6a537579dd1096833ab57511d4312b24c9576 Mon Sep 17 00:00:00 2001 From: semtagg Date: Tue, 21 Mar 2023 19:22:15 +0000 Subject: [PATCH 33/48] wip --- lib/services/services_dlopen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 7e5e10bf7fe..144c2741721 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -68,7 +68,7 @@ services__execute_dlopen_metadata(svc_action_t *op) { void *lib; char *lib_error; char *error; - int (*exec)(GHashTable *, char **, char **); + int (*exec)(char **); char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); @@ -84,7 +84,7 @@ services__execute_dlopen_metadata(svc_action_t *op) { return pcmk_rc_error; } else { - op->rc = exec(op->params, &op->stdout_data, &error); + op->rc = exec(&op->stdout_data); op->status = PCMK_EXEC_DONE; op->pid = 0; if (op->interval_ms != 0) { From a7bf2c4c0ee05c2c8045442e3c4f39fda89512e6 Mon Sep 17 00:00:00 2001 From: semtagg Date: Wed, 22 Mar 2023 14:00:19 +0300 Subject: [PATCH 34/48] fix --- lib/services/services.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/services/services.c b/lib/services/services.c index a5fe8056b17..0f14bb78c1c 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -1076,6 +1076,7 @@ resources_list_standards(void) GList *standards = NULL; standards = g_list_append(standards, strdup(PCMK_RESOURCE_CLASS_OCF)); + standards = g_list_append(standards, strdup(PCMK_RESOURCE_CLASS_DLOPEN)); standards = g_list_append(standards, strdup(PCMK_RESOURCE_CLASS_LSB)); standards = g_list_append(standards, strdup(PCMK_RESOURCE_CLASS_SERVICE)); From 859321a9ce8d00635bff75a8f53cca19e53a3f35 Mon Sep 17 00:00:00 2001 From: semtagg Date: Fri, 24 Mar 2023 11:38:48 +0300 Subject: [PATCH 35/48] WIP --- xml/resources-3.7.rng | 1 + 1 file changed, 1 insertion(+) diff --git a/xml/resources-3.7.rng b/xml/resources-3.7.rng index 9b58d346302..1a027a00895 100644 --- a/xml/resources-3.7.rng +++ b/xml/resources-3.7.rng @@ -421,6 +421,7 @@ service systemd nagios + dlopen From 0b9d3153d9dfcd5b31111b5dd6aae6e06da7545a Mon Sep 17 00:00:00 2001 From: semtagg Date: Fri, 24 Mar 2023 19:16:36 +0300 Subject: [PATCH 36/48] WIP --- .vscode/settings.json | 5 -- lib/services/services_dlopen.c | 111 +++++++++++++++------------------ 2 files changed, 49 insertions(+), 67 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 174bd81f093..00000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "files.associations": { - "services_private.h": "c" - } -} \ No newline at end of file diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 144c2741721..6492022ea77 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -67,48 +67,34 @@ int services__execute_dlopen_metadata(svc_action_t *op) { void *lib; char *lib_error; - char *error; - int (*exec)(char **); + const char *metadata; char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); - g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); if (!lib) { return pcmk_rc_error; - } else { - exec = dlsym(lib, "metadata"); + } - if ((lib_error = dlerror()) != NULL){ - free(lib_error); + metadata = dlsym(lib, "metadata"); - return pcmk_rc_error; - } else { - op->rc = exec(&op->stdout_data); - op->status = PCMK_EXEC_DONE; - op->pid = 0; - if (op->interval_ms != 0) { - // Recurring operations must be either cancelled or rescheduled - if (op->cancel) { - services__set_cancelled(op); - cancel_recurring_action(op); - } else { - op->opaque->repeat_timer = g_timeout_add(op->interval_ms, - recurring_action_timer, - (void *) op); - } - } - - if (op->opaque->callback) { - op->opaque->callback(op); - } - - crm_info("Exit code: %d, error: %s", op->rc, error); - - dlclose(lib); - return pcmk_rc_ok; - } + if ((lib_error = dlerror()) != NULL){ + free(lib_error); + + return pcmk_rc_error; } + + op->rc = PCMK_OCF_OK; + op->status = PCMK_EXEC_DONE; + op->pid = 0; + op->stdout_data = strdup(metadata); + + if (op->opaque->callback) { + op->opaque->callback(op); + } + + dlclose(lib); + return pcmk_rc_ok; } int @@ -119,42 +105,43 @@ services__execute_dlopen_action(svc_action_t *op) { int (*exec)(GHashTable *, char **); char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); - g_hash_table_replace(op->params, strdup("OCF_RESOURCE_INSTANCE"), strdup(op->rsc)); + g_hash_table_replace(op->params, strdup("DLOPEN_RESOURCE_INSTANCE"), strdup(op->rsc)); lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); if (!lib) { return pcmk_rc_error; - } else { - exec = dlsym(lib, op->action); + } + + exec = dlsym(lib, op->action); + + if ((lib_error = dlerror()) != NULL){ + free(lib_error); + + return pcmk_rc_error; + } - if ((lib_error = dlerror()) != NULL){ - free(lib_error); + op->rc = exec(op->params, &error); + op->status = PCMK_EXEC_DONE; + op->pid = 0; - return pcmk_rc_error; + if (op->interval_ms != 0) { + // Recurring operations must be either cancelled or rescheduled + if (op->cancel) { + services__set_cancelled(op); + cancel_recurring_action(op); } else { - op->rc = exec(op->params, &error); - op->status = PCMK_EXEC_DONE; - op->pid = 0; - if (op->interval_ms != 0) { - // Recurring operations must be either cancelled or rescheduled - if (op->cancel) { - services__set_cancelled(op); - cancel_recurring_action(op); - } else { - op->opaque->repeat_timer = g_timeout_add(op->interval_ms, - recurring_action_timer, - (void *) op); - } - } - - if (op->opaque->callback) { - op->opaque->callback(op); - } - - crm_info("Exit code: %d, error: %s", op->rc, error); - - dlclose(lib); - return pcmk_rc_ok; + op->opaque->repeat_timer = g_timeout_add(op->interval_ms, + recurring_action_timer, + (void *) op); } } + + if (op->opaque->callback) { + op->opaque->callback(op); + } + + crm_info("Exit code: %d, error: %s", op->rc, error); + + dlclose(lib); + return pcmk_rc_ok; } From 9471542fdec463055ace4e49150d85505411bd37 Mon Sep 17 00:00:00 2001 From: semtagg Date: Sun, 26 Mar 2023 17:37:26 +0000 Subject: [PATCH 37/48] init --- lib/services/services_dlopen.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 6492022ea77..22e1fce3ad5 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -1,5 +1,5 @@ #include - +#pragma GCC diagnostic ignored "-Waggregate-return" #ifndef _GNU_SOURCE # define _GNU_SOURCE #endif @@ -17,6 +17,9 @@ #define PCMK_DLOPEN_DIR "/usr/lib/dlopen" // or "/usr/lib/dlopen/" +typedef int go_int; +typedef struct{const char *p; go_int len;} go_str; + GList * services__list_dlopen_agents(void) { @@ -67,7 +70,7 @@ int services__execute_dlopen_metadata(svc_action_t *op) { void *lib; char *lib_error; - const char *metadata; + go_str (*metadata)(); char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); @@ -83,11 +86,11 @@ services__execute_dlopen_metadata(svc_action_t *op) { return pcmk_rc_error; } - + op->rc = PCMK_OCF_OK; op->status = PCMK_EXEC_DONE; op->pid = 0; - op->stdout_data = strdup(metadata); + op->stdout_data = strdup(metadata().p); if (op->opaque->callback) { op->opaque->callback(op); @@ -102,10 +105,14 @@ services__execute_dlopen_action(svc_action_t *op) { void *lib; char *lib_error; char *error; - int (*exec)(GHashTable *, char **); + go_str msg = {op->rsc, sizeof(op->rsc)}; + go_int (*exec)(go_str); char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); g_hash_table_replace(op->params, strdup("DLOPEN_RESOURCE_INSTANCE"), strdup(op->rsc)); + + crm_info("Resource %s", op->rsc); + lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); if (!lib) { @@ -120,7 +127,7 @@ services__execute_dlopen_action(svc_action_t *op) { return pcmk_rc_error; } - op->rc = exec(op->params, &error); + op->rc = exec(msg); op->status = PCMK_EXEC_DONE; op->pid = 0; From 142e4b1d273bd2b01381d3a9a2aeb318b8254d07 Mon Sep 17 00:00:00 2001 From: semtagg Date: Fri, 14 Apr 2023 20:16:16 +0000 Subject: [PATCH 38/48] wip --- lib/services/services_dlopen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 22e1fce3ad5..12feabc79c9 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -105,7 +105,7 @@ services__execute_dlopen_action(svc_action_t *op) { void *lib; char *lib_error; char *error; - go_str msg = {op->rsc, sizeof(op->rsc)}; + go_str msg = {op->rsc, strlen(op->rsc)}; go_int (*exec)(go_str); char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); From 0070a2d1b3068dcc93305e7dd8d72035ec0aef40 Mon Sep 17 00:00:00 2001 From: semtagg Date: Sat, 15 Apr 2023 16:54:07 +0000 Subject: [PATCH 39/48] wip --- lib/services/services_dlopen.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 22e1fce3ad5..3fc1072423e 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -71,6 +71,7 @@ services__execute_dlopen_metadata(svc_action_t *op) { void *lib; char *lib_error; go_str (*metadata)(); + go_str msg; char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); @@ -87,10 +88,12 @@ services__execute_dlopen_metadata(svc_action_t *op) { return pcmk_rc_error; } + msg = metadata(); op->rc = PCMK_OCF_OK; op->status = PCMK_EXEC_DONE; op->pid = 0; - op->stdout_data = strdup(metadata().p); + op->stdout_data = strndup(msg.p, msg.len); + //op->stdout_data = strdup(metadata().p); if (op->opaque->callback) { op->opaque->callback(op); @@ -105,7 +108,7 @@ services__execute_dlopen_action(svc_action_t *op) { void *lib; char *lib_error; char *error; - go_str msg = {op->rsc, sizeof(op->rsc)}; + go_str msg = {op->rsc, strlen(op->rsc)}; go_int (*exec)(go_str); char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); From 3fe996c1eb7ebdf889fa4f69c79c42063d552b04 Mon Sep 17 00:00:00 2001 From: semtagg Date: Sat, 15 Apr 2023 18:13:43 +0000 Subject: [PATCH 40/48] fix 'not running' notice --- daemons/execd/execd_commands.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 096e9d53659..1ba85f0233a 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -902,6 +902,20 @@ action_complete(svc_action_t * action) } #endif + if (rsc && pcmk__str_eq(rsc->class, PCMK_RESOURCE_CLASS_DLOPEN, pcmk__str_casei)) { + if (action_matches(cmd, "monitor", 0) + && pcmk__result_ok(&(cmd->result))) { + /* Successfully executed --version for the nagios plugin */ + cmd->result.exit_status = PCMK_OCF_NOT_RUNNING; + + } else if (pcmk__str_eq(cmd->action, "start", pcmk__str_casei) + && !pcmk__result_ok(&(cmd->result))) { +#ifdef PCMK__TIME_USE_CGT + goagain = true; +#endif + } + } + #ifdef PCMK__TIME_USE_CGT if (goagain) { int time_sum = time_diff_ms(NULL, &(cmd->t_first_run)); From 7d5e7470faa5116b33463e791ba0b41e8681de63 Mon Sep 17 00:00:00 2001 From: semtagg Date: Tue, 18 Apr 2023 00:33:40 +0300 Subject: [PATCH 41/48] wip --- lib/services/services_dlopen.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 3fc1072423e..b171a8b2de3 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -19,6 +19,7 @@ typedef int go_int; typedef struct{const char *p; go_int len;} go_str; +typedef struct{void *arr; go_int len; go_int cap;} go_slice; GList * services__list_dlopen_agents(void) @@ -107,12 +108,14 @@ int services__execute_dlopen_action(svc_action_t *op) { void *lib; char *lib_error; - char *error; - go_str msg = {op->rsc, strlen(op->rsc)}; - go_int (*exec)(go_str); + go_str msg = {op->rsc, strlen(op->rsc)}; // strdup ? + go_str *error = malloc(sizeof(go_str)); + go_int (*exec)(go_slice, go_str *); char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); - g_hash_table_replace(op->params, strdup("DLOPEN_RESOURCE_INSTANCE"), strdup(op->rsc)); + go_str data = {{strdup(op->rsc), strlen(op->rsc)}}; + go_slice params = {data, 1, 1}; + // g_hash_table_replace(op->params, strdup("DLOPEN_RESOURCE_INSTANCE"), strdup(op->rsc)); crm_info("Resource %s", op->rsc); @@ -130,7 +133,7 @@ services__execute_dlopen_action(svc_action_t *op) { return pcmk_rc_error; } - op->rc = exec(msg); + op->rc = exec(params, error); op->status = PCMK_EXEC_DONE; op->pid = 0; @@ -150,7 +153,7 @@ services__execute_dlopen_action(svc_action_t *op) { op->opaque->callback(op); } - crm_info("Exit code: %d, error: %s", op->rc, error); + crm_info("Exit code: %d, error: %s", op->rc, error->p); dlclose(lib); return pcmk_rc_ok; From a6fd49c7d3e35fa262b4f221361e5f2e477c2af2 Mon Sep 17 00:00:00 2001 From: semtagg Date: Tue, 18 Apr 2023 07:11:26 +0000 Subject: [PATCH 42/48] wip --- lib/services/services_dlopen.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index b171a8b2de3..c99c89e6683 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -17,7 +17,7 @@ #define PCMK_DLOPEN_DIR "/usr/lib/dlopen" // or "/usr/lib/dlopen/" -typedef int go_int; +typedef long long int go_int; typedef struct{const char *p; go_int len;} go_str; typedef struct{void *arr; go_int len; go_int cap;} go_slice; @@ -108,15 +108,13 @@ int services__execute_dlopen_action(svc_action_t *op) { void *lib; char *lib_error; - go_str msg = {op->rsc, strlen(op->rsc)}; // strdup ? go_str *error = malloc(sizeof(go_str)); go_int (*exec)(go_slice, go_str *); + go_str data[1] = {{strdup(op->rsc), strlen(op->rsc)}}; //strdup ? + go_slice params = {data, 1, 1}; char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); - go_str data = {{strdup(op->rsc), strlen(op->rsc)}}; - go_slice params = {data, 1, 1}; - // g_hash_table_replace(op->params, strdup("DLOPEN_RESOURCE_INSTANCE"), strdup(op->rsc)); - + crm_info("Resource %s", op->rsc); lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); From 4f77365edec10d30fef632316ac94a60002d2a03 Mon Sep 17 00:00:00 2001 From: semtagg Date: Tue, 18 Apr 2023 07:24:24 +0000 Subject: [PATCH 43/48] wip --- lib/services/services_dlopen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index c99c89e6683..04d3f3450fd 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -110,7 +110,7 @@ services__execute_dlopen_action(svc_action_t *op) { char *lib_error; go_str *error = malloc(sizeof(go_str)); go_int (*exec)(go_slice, go_str *); - go_str data[1] = {{strdup(op->rsc), strlen(op->rsc)}}; //strdup ? + go_str data[1] = {{op->rsc, strlen(op->rsc)}}; //strdup ? go_slice params = {data, 1, 1}; char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); @@ -151,7 +151,7 @@ services__execute_dlopen_action(svc_action_t *op) { op->opaque->callback(op); } - crm_info("Exit code: %d, error: %s", op->rc, error->p); + // crm_info("Exit code: %d, error: %s", op->rc, error->p); dlclose(lib); return pcmk_rc_ok; From ae81657f5bcea18f13961c1a94f577f7161f8dfe Mon Sep 17 00:00:00 2001 From: semtagg Date: Tue, 18 Apr 2023 07:28:44 +0000 Subject: [PATCH 44/48] minimal working version --- lib/services/services_dlopen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 04d3f3450fd..8fd85b3734d 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -115,7 +115,7 @@ services__execute_dlopen_action(svc_action_t *op) { char dst[200] = "/usr/lib/dlopen/"; strcat(dst, op->agent); - crm_info("Resource %s", op->rsc); + // crm_info("Resource %s", op->rsc); lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); From 7157a47283d49a8a33b27ca69a4fe2283b8a5e9f Mon Sep 17 00:00:00 2001 From: semtagg Date: Tue, 18 Apr 2023 10:41:53 +0300 Subject: [PATCH 45/48] update --- .vscode/settings.json | 5 +++++ configure.ac | 11 +++++++++++ lib/services/services_dlopen.c | 6 +++--- 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000000..bf377b582af --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "crm_internal.h": "c" + } +} \ No newline at end of file diff --git a/configure.ac b/configure.ac index 993589b9126..6e0f163911f 100644 --- a/configure.ac +++ b/configure.ac @@ -485,6 +485,13 @@ AC_ARG_WITH([logdir], [ CRM_LOG_DIR="$withval" ] ) +DLOPEN_ROOT_DIR="" +AC_ARG_WITH([dlopen-root-dir], + [AS_HELP_STRING([--with-dlopen-root-dir=DIR], + [directory for dlopen plugins @<:@LIBEXECDIR/dlopen@:>@])], + [ DLOPEN_ROOT_DIR="$withval" ] +) + CRM_BUNDLE_DIR="" AC_ARG_WITH([bundledir], [AS_HELP_STRING([--with-bundledir=DIR], @@ -693,6 +700,10 @@ expand_path_option CRM_LOG_DIR "${localstatedir}/log/pacemaker" AC_DEFINE_UNQUOTED(CRM_LOG_DIR,"$CRM_LOG_DIR", Location for Pacemaker log file) AC_SUBST(CRM_LOG_DIR) +expand_path_option DLOPEN_ROOT_DIR "${libexecdir}/log/pacemaker" +AC_DEFINE_UNQUOTED(DLOPEN_ROOT_DIR, "$DLOPEN_ROOT_DIR", Directory for dlopen plugins) +AC_SUBST(DLOPEN_ROOT_DIR) + expand_path_option CRM_BUNDLE_DIR "${localstatedir}/log/pacemaker/bundles" AC_DEFINE_UNQUOTED(CRM_BUNDLE_DIR,"$CRM_BUNDLE_DIR", Location for Pacemaker bundle logs) AC_SUBST(CRM_BUNDLE_DIR) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 8fd85b3734d..82bbd8d2981 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -24,7 +24,7 @@ typedef struct{void *arr; go_int len; go_int cap;} go_slice; GList * services__list_dlopen_agents(void) { - return services_os_get_directory_list(PCMK_DLOPEN_DIR, TRUE, FALSE); + return services_os_get_directory_list(DLOPEN_ROOT_DIR, TRUE, FALSE); } bool @@ -32,7 +32,7 @@ services__dlopen_agent_exists(const char *agent) { bool rc = FALSE; struct stat st; - char *path = pcmk__full_path(agent, PCMK_DLOPEN_DIR); + char *path = pcmk__full_path(agent, DLOPEN_ROOT_DIR); rc = (stat(path, &st) == 0); free(path); @@ -42,7 +42,7 @@ services__dlopen_agent_exists(const char *agent) int services__dlopen_prepare(svc_action_t *op) { - op->opaque->exec = pcmk__full_path(op->agent, PCMK_DLOPEN_DIR); + op->opaque->exec = pcmk__full_path(op->agent, DLOPEN_ROOT_DIR); op->opaque->args[0] = strdup(op->opaque->exec); op->opaque->args[1] = strdup(op->action); if ((op->opaque->args[0] == NULL) || (op->opaque->args[1] == NULL)) { From 242ad1c31abebea907db2d1ac7bd4348a7be7c7a Mon Sep 17 00:00:00 2001 From: semtagg Date: Thu, 13 Apr 2023 22:10:25 +0000 Subject: [PATCH 46/48] wip --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 6e0f163911f..6cacfc081d8 100644 --- a/configure.ac +++ b/configure.ac @@ -488,7 +488,7 @@ AC_ARG_WITH([logdir], DLOPEN_ROOT_DIR="" AC_ARG_WITH([dlopen-root-dir], [AS_HELP_STRING([--with-dlopen-root-dir=DIR], - [directory for dlopen plugins @<:@LIBEXECDIR/dlopen@:>@])], + [directory for dlopen plugins @<:@/usr/lib/dlopen@:>@])], [ DLOPEN_ROOT_DIR="$withval" ] ) @@ -700,7 +700,7 @@ expand_path_option CRM_LOG_DIR "${localstatedir}/log/pacemaker" AC_DEFINE_UNQUOTED(CRM_LOG_DIR,"$CRM_LOG_DIR", Location for Pacemaker log file) AC_SUBST(CRM_LOG_DIR) -expand_path_option DLOPEN_ROOT_DIR "${libexecdir}/log/pacemaker" +expand_path_option DLOPEN_ROOT_DIR "/usr/lib/dlopen" AC_DEFINE_UNQUOTED(DLOPEN_ROOT_DIR, "$DLOPEN_ROOT_DIR", Directory for dlopen plugins) AC_SUBST(DLOPEN_ROOT_DIR) From 01436baacbd5c4d49ac2e51f8e45a15a7b83b2b9 Mon Sep 17 00:00:00 2001 From: semtagg Date: Tue, 18 Apr 2023 10:45:54 +0300 Subject: [PATCH 47/48] fix --- .vscode/settings.json | 5 ----- lib/services/services_dlopen.c | 11 ++++------- 2 files changed, 4 insertions(+), 12 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index bf377b582af..00000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "files.associations": { - "crm_internal.h": "c" - } -} \ No newline at end of file diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 82bbd8d2981..39fa1e92d86 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -15,8 +15,6 @@ #include "services_private.h" #include "services_dlopen.h" -#define PCMK_DLOPEN_DIR "/usr/lib/dlopen" // or "/usr/lib/dlopen/" - typedef long long int go_int; typedef struct{const char *p; go_int len;} go_str; typedef struct{void *arr; go_int len; go_int cap;} go_slice; @@ -73,8 +71,8 @@ services__execute_dlopen_metadata(svc_action_t *op) { char *lib_error; go_str (*metadata)(); go_str msg; - char dst[200] = "/usr/lib/dlopen/"; - strcat(dst, op->agent); + char *dst = pcmk__full_path(op->agent, DLOPEN_ROOT_DIR); + lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); if (!lib) { @@ -112,11 +110,10 @@ services__execute_dlopen_action(svc_action_t *op) { go_int (*exec)(go_slice, go_str *); go_str data[1] = {{op->rsc, strlen(op->rsc)}}; //strdup ? go_slice params = {data, 1, 1}; - char dst[200] = "/usr/lib/dlopen/"; - strcat(dst, op->agent); + char *dst = pcmk__full_path(op->agent, DLOPEN_ROOT_DIR); // crm_info("Resource %s", op->rsc); - + lib = dlopen(dst, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); if (!lib) { From 1b0c33a82f08a8ebd57aa6e8502ea8508408bafc Mon Sep 17 00:00:00 2001 From: semtagg Date: Tue, 18 Apr 2023 18:03:41 +0300 Subject: [PATCH 48/48] wip --- lib/services/services_dlopen.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/services/services_dlopen.c b/lib/services/services_dlopen.c index 39fa1e92d86..e4fca6beac5 100644 --- a/lib/services/services_dlopen.c +++ b/lib/services/services_dlopen.c @@ -106,9 +106,9 @@ int services__execute_dlopen_action(svc_action_t *op) { void *lib; char *lib_error; - go_str *error = malloc(sizeof(go_str)); + go_str error; go_int (*exec)(go_slice, go_str *); - go_str data[1] = {{op->rsc, strlen(op->rsc)}}; //strdup ? + go_str data[1] = {{op->rsc, strlen(op->rsc)}}; go_slice params = {data, 1, 1}; char *dst = pcmk__full_path(op->agent, DLOPEN_ROOT_DIR); @@ -128,9 +128,12 @@ services__execute_dlopen_action(svc_action_t *op) { return pcmk_rc_error; } - op->rc = exec(params, error); + op->rc = exec(params, &error); op->status = PCMK_EXEC_DONE; op->pid = 0; + if (op->rc) { + op->stderr_data = strndup(error.p, error.len); + } if (op->interval_ms != 0) { // Recurring operations must be either cancelled or rescheduled