1 /* 2 * Copyright 2004-2024 the Pacemaker project contributors 3 * 4 * The version control history for this file may have further details. 5 * 6 * This source code is licensed under the GNU Lesser General Public License 7 * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. 8 */ 9 10 #ifndef PCMK__CRM_COMMON_DIGESTS_INTERNAL__H 11 #define PCMK__CRM_COMMON_DIGESTS_INTERNAL__H 12 13 #include <libxml/tree.h> // xmlNode 14 15 #ifdef __cplusplus 16 extern "C" { 17 #endif 18 19 // Digest comparison results 20 enum pcmk__digest_result { 21 pcmk__digest_unknown, // No digest available for comparison 22 pcmk__digest_match, // Digests match 23 pcmk__digest_mismatch, // Any parameter changed (potentially reloadable) 24 pcmk__digest_restart, // Parameters that require a restart changed 25 }; 26 27 // Information needed to compare operation digests 28 typedef struct { 29 enum pcmk__digest_result rc; // Result of digest comparison 30 xmlNode *params_all; // All operation parameters 31 xmlNode *params_secure; // Parameters marked private 32 xmlNode *params_restart; // Parameters marked not reloadable 33 char *digest_all_calc; // Digest of params_all 34 char *digest_secure_calc; // Digest of params_secure 35 char *digest_restart_calc; // Digest of params_restart 36 } pcmk__op_digest_t; 37 38 bool pcmk__verify_digest(xmlNode *input, const char *expected); 39 40 #ifdef __cplusplus 41 } 42 #endif 43 44 #endif // PCMK__CRM_COMMON_DIGESTS_INTERNAL__H