Coverage Report

Created: 2026-04-04 06:09

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/pacemaker/include/crm/common/xml_element_internal.h
Line
Count
Source
1
/*
2
 * Copyright 2017-2026 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__INCLUDED_CRM_COMMON_INTERNAL_H
11
#error "Include <crm/common/internal.h> instead of <xml_element_internal.h> directly"
12
#endif
13
14
#ifndef PCMK__CRM_COMMON_XML_ELEMENT_INTERNAL__H
15
#define PCMK__CRM_COMMON_XML_ELEMENT_INTERNAL__H
16
17
/*
18
 * Internal-only wrappers for and extensions to libxml2 for processing XML
19
 * elements
20
 */
21
22
#include <stdbool.h>                        // bool
23
#include <stdint.h>                         // uint32_t
24
#include <stdio.h>                          // NULL
25
#include <string.h>                         // strcmp()
26
27
#include <glib.h>                           // guint
28
#include <libxml/tree.h>                    // xmlNode, etc.
29
30
#include <crm/common/iso8601.h>             // crm_time_t
31
#include <crm/common/strings_internal.h>    // pcmk__str_copy()
32
#include <crm/common/xml_names.h>           // PCMK_XA_ID
33
34
#ifdef __cplusplus
35
extern "C" {
36
#endif
37
38
const char *pcmk__xe_add_last_written(xmlNode *xe);
39
40
xmlNode *pcmk__xe_first_child(const xmlNode *parent, const char *node_name,
41
                              const char *attr_n, const char *attr_v);
42
43
void pcmk__xe_remove_attr(xmlNode *element, const char *name);
44
bool pcmk__xe_remove_attr_cb(xmlNode *xml, void *user_data);
45
void pcmk__xe_remove_matching_attrs(xmlNode *element, bool force,
46
                                    bool (*match)(xmlAttrPtr, void *),
47
                                    void *user_data);
48
int pcmk__xe_delete_match(xmlNode *xml, xmlNode *search);
49
int pcmk__xe_replace_match(xmlNode *xml, xmlNode *replace);
50
int pcmk__xe_update_match(xmlNode *xml, xmlNode *update, uint32_t flags);
51
52
/*!
53
 * \internal
54
 * \brief Check whether an XML element is of a particular type
55
 *
56
 * \param[in] xml   XML element to compare
57
 * \param[in] name  XML element name to compare
58
 *
59
 * \return \c true if \p xml is of type \p name, otherwise \c false
60
 */
61
static inline bool
62
pcmk__xe_is(const xmlNode *xml, const char *name)
63
0
{
64
0
    return (xml != NULL) && (xml->name != NULL) && (name != NULL)
65
0
           && (strcmp((const char *) xml->name, name) == 0);
66
0
}
Unexecuted instantiation: scores_fuzzer.c:pcmk__xe_is
Unexecuted instantiation: results.c:pcmk__xe_is
Unexecuted instantiation: scores.c:pcmk__xe_is
Unexecuted instantiation: strings.c:pcmk__xe_is
Unexecuted instantiation: utils.c:pcmk__xe_is
Unexecuted instantiation: iso8601.c:pcmk__xe_is
Unexecuted instantiation: logging.c:pcmk__xe_is
Unexecuted instantiation: mainloop.c:pcmk__xe_is
Unexecuted instantiation: options.c:pcmk__xe_is
Unexecuted instantiation: output.c:pcmk__xe_is
Unexecuted instantiation: output_log.c:pcmk__xe_is
Unexecuted instantiation: output_text.c:pcmk__xe_is
Unexecuted instantiation: output_xml.c:pcmk__xe_is
Unexecuted instantiation: patchset_display.c:pcmk__xe_is
Unexecuted instantiation: schemas.c:pcmk__xe_is
Unexecuted instantiation: xml.c:pcmk__xe_is
Unexecuted instantiation: xml_attr.c:pcmk__xe_is
Unexecuted instantiation: xml_comment.c:pcmk__xe_is
Unexecuted instantiation: xml_display.c:pcmk__xe_is
Unexecuted instantiation: xml_element.c:pcmk__xe_is
Unexecuted instantiation: xml_idref.c:pcmk__xe_is
Unexecuted instantiation: xml_io.c:pcmk__xe_is
Unexecuted instantiation: xpath.c:pcmk__xe_is
Unexecuted instantiation: acl.c:pcmk__xe_is
Unexecuted instantiation: actions.c:pcmk__xe_is
Unexecuted instantiation: agents.c:pcmk__xe_is
Unexecuted instantiation: cmdline.c:pcmk__xe_is
Unexecuted instantiation: digest.c:pcmk__xe_is
Unexecuted instantiation: health.c:pcmk__xe_is
Unexecuted instantiation: io.c:pcmk__xe_is
Unexecuted instantiation: ipc_client.c:pcmk__xe_is
Unexecuted instantiation: ipc_common.c:pcmk__xe_is
Unexecuted instantiation: ipc_controld.c:pcmk__xe_is
Unexecuted instantiation: ipc_pacemakerd.c:pcmk__xe_is
Unexecuted instantiation: ipc_schedulerd.c:pcmk__xe_is
Unexecuted instantiation: ipc_server.c:pcmk__xe_is
Unexecuted instantiation: messages.c:pcmk__xe_is
Unexecuted instantiation: nodes.c:pcmk__xe_is
Unexecuted instantiation: nvpair.c:pcmk__xe_is
Unexecuted instantiation: options_display.c:pcmk__xe_is
Unexecuted instantiation: patchset.c:pcmk__xe_is
Unexecuted instantiation: procfs.c:pcmk__xe_is
Unexecuted instantiation: rules.c:pcmk__xe_is
Unexecuted instantiation: servers.c:pcmk__xe_is
Unexecuted instantiation: cib.c:pcmk__xe_is
Unexecuted instantiation: ipc_attrd.c:pcmk__xe_is
Unexecuted instantiation: pid.c:pcmk__xe_is
Unexecuted instantiation: attrs.c:pcmk__xe_is
Unexecuted instantiation: strings_fuzzer.c:pcmk__xe_is
Unexecuted instantiation: cib_file_fuzzer.c:pcmk__xe_is
Unexecuted instantiation: cib_client.c:pcmk__xe_is
Unexecuted instantiation: cib_file.c:pcmk__xe_is
Unexecuted instantiation: cib_native.c:pcmk__xe_is
Unexecuted instantiation: cib_ops.c:pcmk__xe_is
Unexecuted instantiation: cib_remote.c:pcmk__xe_is
Unexecuted instantiation: cib_utils.c:pcmk__xe_is
Unexecuted instantiation: remote.c:pcmk__xe_is
Unexecuted instantiation: tls.c:pcmk__xe_is
Unexecuted instantiation: watchdog.c:pcmk__xe_is
Unexecuted instantiation: iso8601_fuzzer.c:pcmk__xe_is
67
68
xmlNode *pcmk__xe_create(xmlNode *parent, const char *name);
69
xmlNode *pcmk__xe_next(const xmlNode *node, const char *element_name);
70
71
void pcmk__xe_set_content(xmlNode *node, const char *format, ...)
72
    G_GNUC_PRINTF(2, 3);
73
74
int pcmk__xe_get_score(const xmlNode *xml, const char *name, int *score,
75
                       int default_score);
76
77
int pcmk__xe_copy_attrs(xmlNode *target, const xmlNode *src, uint32_t flags);
78
void pcmk__xe_sort_attrs(xmlNode *xml);
79
80
void pcmk__xe_set_id(xmlNode *xml, const char *format, ...)
81
    G_GNUC_PRINTF(2, 3);
82
83
/*!
84
 * \internal
85
 * \brief Like pcmk__xe_set_props, but takes a va_list instead of
86
 *        arguments directly.
87
 *
88
 * \param[in,out] node   XML to add attributes to
89
 * \param[in]     pairs  NULL-terminated list of name/value pairs to add
90
 */
91
void
92
pcmk__xe_set_propv(xmlNodePtr node, va_list pairs);
93
94
/*!
95
 * \internal
96
 * \brief Add a NULL-terminated list of name/value pairs to the given
97
 *        XML node as properties.
98
 *
99
 * \param[in,out] node XML node to add properties to
100
 * \param[in]     ...  NULL-terminated list of name/value pairs
101
 *
102
 * \note A NULL name terminates the arguments; a NULL value will be skipped.
103
 */
104
void
105
pcmk__xe_set_props(xmlNodePtr node, ...)
106
G_GNUC_NULL_TERMINATED;
107
108
/*!
109
 * \internal
110
 * \brief Get first attribute of an XML element
111
 *
112
 * \param[in] xe  XML element to check
113
 *
114
 * \return First attribute of \p xe (or NULL if \p xe is NULL or has none)
115
 */
116
static inline xmlAttr *
117
pcmk__xe_first_attr(const xmlNode *xe)
118
0
{
119
0
    return (xe == NULL)? NULL : xe->properties;
120
0
}
Unexecuted instantiation: scores_fuzzer.c:pcmk__xe_first_attr
Unexecuted instantiation: results.c:pcmk__xe_first_attr
Unexecuted instantiation: scores.c:pcmk__xe_first_attr
Unexecuted instantiation: strings.c:pcmk__xe_first_attr
Unexecuted instantiation: utils.c:pcmk__xe_first_attr
Unexecuted instantiation: iso8601.c:pcmk__xe_first_attr
Unexecuted instantiation: logging.c:pcmk__xe_first_attr
Unexecuted instantiation: mainloop.c:pcmk__xe_first_attr
Unexecuted instantiation: options.c:pcmk__xe_first_attr
Unexecuted instantiation: output.c:pcmk__xe_first_attr
Unexecuted instantiation: output_log.c:pcmk__xe_first_attr
Unexecuted instantiation: output_text.c:pcmk__xe_first_attr
Unexecuted instantiation: output_xml.c:pcmk__xe_first_attr
Unexecuted instantiation: patchset_display.c:pcmk__xe_first_attr
Unexecuted instantiation: schemas.c:pcmk__xe_first_attr
Unexecuted instantiation: xml.c:pcmk__xe_first_attr
Unexecuted instantiation: xml_attr.c:pcmk__xe_first_attr
Unexecuted instantiation: xml_comment.c:pcmk__xe_first_attr
Unexecuted instantiation: xml_display.c:pcmk__xe_first_attr
Unexecuted instantiation: xml_element.c:pcmk__xe_first_attr
Unexecuted instantiation: xml_idref.c:pcmk__xe_first_attr
Unexecuted instantiation: xml_io.c:pcmk__xe_first_attr
Unexecuted instantiation: xpath.c:pcmk__xe_first_attr
Unexecuted instantiation: acl.c:pcmk__xe_first_attr
Unexecuted instantiation: actions.c:pcmk__xe_first_attr
Unexecuted instantiation: agents.c:pcmk__xe_first_attr
Unexecuted instantiation: cmdline.c:pcmk__xe_first_attr
Unexecuted instantiation: digest.c:pcmk__xe_first_attr
Unexecuted instantiation: health.c:pcmk__xe_first_attr
Unexecuted instantiation: io.c:pcmk__xe_first_attr
Unexecuted instantiation: ipc_client.c:pcmk__xe_first_attr
Unexecuted instantiation: ipc_common.c:pcmk__xe_first_attr
Unexecuted instantiation: ipc_controld.c:pcmk__xe_first_attr
Unexecuted instantiation: ipc_pacemakerd.c:pcmk__xe_first_attr
Unexecuted instantiation: ipc_schedulerd.c:pcmk__xe_first_attr
Unexecuted instantiation: ipc_server.c:pcmk__xe_first_attr
Unexecuted instantiation: messages.c:pcmk__xe_first_attr
Unexecuted instantiation: nodes.c:pcmk__xe_first_attr
Unexecuted instantiation: nvpair.c:pcmk__xe_first_attr
Unexecuted instantiation: options_display.c:pcmk__xe_first_attr
Unexecuted instantiation: patchset.c:pcmk__xe_first_attr
Unexecuted instantiation: procfs.c:pcmk__xe_first_attr
Unexecuted instantiation: rules.c:pcmk__xe_first_attr
Unexecuted instantiation: servers.c:pcmk__xe_first_attr
Unexecuted instantiation: cib.c:pcmk__xe_first_attr
Unexecuted instantiation: ipc_attrd.c:pcmk__xe_first_attr
Unexecuted instantiation: pid.c:pcmk__xe_first_attr
Unexecuted instantiation: attrs.c:pcmk__xe_first_attr
Unexecuted instantiation: strings_fuzzer.c:pcmk__xe_first_attr
Unexecuted instantiation: cib_file_fuzzer.c:pcmk__xe_first_attr
Unexecuted instantiation: cib_client.c:pcmk__xe_first_attr
Unexecuted instantiation: cib_file.c:pcmk__xe_first_attr
Unexecuted instantiation: cib_native.c:pcmk__xe_first_attr
Unexecuted instantiation: cib_ops.c:pcmk__xe_first_attr
Unexecuted instantiation: cib_remote.c:pcmk__xe_first_attr
Unexecuted instantiation: cib_utils.c:pcmk__xe_first_attr
Unexecuted instantiation: remote.c:pcmk__xe_first_attr
Unexecuted instantiation: tls.c:pcmk__xe_first_attr
Unexecuted instantiation: watchdog.c:pcmk__xe_first_attr
Unexecuted instantiation: iso8601_fuzzer.c:pcmk__xe_first_attr
121
122
/*!
123
 * \internal
124
 * \brief Iterate over child elements of \p xml
125
 *
126
 * This function iterates over the children of \p xml, performing the
127
 * callback function \p handler on each node.  If the callback returns
128
 * a value other than pcmk_rc_ok, the iteration stops and the value is
129
 * returned.  It is therefore possible that not all children will be
130
 * visited.
131
 *
132
 * \param[in,out] xml                 The starting XML node.  Can be NULL.
133
 * \param[in]     child_element_name  The name that the node must match in order
134
 *                                    for \p handler to be run.  If NULL, all
135
 *                                    child elements will match.
136
 * \param[in]     handler             The callback function.
137
 * \param[in,out] userdata            User data to pass to the callback function.
138
 *                                    Can be NULL.
139
 *
140
 * \return Standard Pacemaker return code
141
 */
142
int
143
pcmk__xe_foreach_child(xmlNode *xml, const char *child_element_name,
144
                       int (*handler)(xmlNode *xml, void *userdata),
145
                       void *userdata);
146
147
const char *pcmk__xe_get(const xmlNode *xml, const char *attr_name);
148
int pcmk__xe_set(xmlNode *xml, const char *attr_name, const char *value);
149
150
int pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t);
151
int pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest,
152
                       uint32_t default_value);
153
154
int pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest);
155
void pcmk__xe_set_guint(xmlNode *xml, const char *attr, guint value);
156
157
int pcmk__xe_get_int(const xmlNode *xml, const char *name, int *dest);
158
void pcmk__xe_set_int(xmlNode *xml, const char *attr, int value);
159
160
int pcmk__xe_get_ll(const xmlNode *xml, const char *name, long long *dest);
161
int pcmk__xe_set_ll(xmlNode *xml, const char *attr, long long value);
162
163
int pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest);
164
void pcmk__xe_set_time(xmlNode *xml, const char *attr, time_t value);
165
166
int pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr,
167
                         const char *usec_attr, struct timeval *dest);
168
void pcmk__xe_set_timeval(xmlNode *xml, const char *sec_attr,
169
                          const char *usec_attr, const struct timeval *value);
170
171
int pcmk__xe_get_bool(const xmlNode *xml, const char *attr, bool *dest);
172
void pcmk__xe_set_bool(xmlNode *xml, const char *attr, bool value);
173
bool pcmk__xe_attr_is_true(const xmlNode *node, const char *name);
174
175
/*!
176
 * \internal
177
 * \brief Retrieve a copy of the value of an XML attribute
178
 *
179
 * This is like \c pcmk__xe_get() but allocates new memory for the result.
180
 *
181
 * \param[in] xml   XML element whose attribute to get
182
 * \param[in] attr  Attribute name
183
 *
184
 * \return Value of specified attribute (or \c NULL if not set)
185
 *
186
 * \note The caller is responsible for freeing the result using \c free().
187
 */
188
static inline char *
189
pcmk__xe_get_copy(const xmlNode *xml, const char *attr)
190
0
{
191
0
    return pcmk__str_copy(pcmk__xe_get(xml, attr));
192
0
}
Unexecuted instantiation: scores_fuzzer.c:pcmk__xe_get_copy
Unexecuted instantiation: results.c:pcmk__xe_get_copy
Unexecuted instantiation: scores.c:pcmk__xe_get_copy
Unexecuted instantiation: strings.c:pcmk__xe_get_copy
Unexecuted instantiation: utils.c:pcmk__xe_get_copy
Unexecuted instantiation: iso8601.c:pcmk__xe_get_copy
Unexecuted instantiation: logging.c:pcmk__xe_get_copy
Unexecuted instantiation: mainloop.c:pcmk__xe_get_copy
Unexecuted instantiation: options.c:pcmk__xe_get_copy
Unexecuted instantiation: output.c:pcmk__xe_get_copy
Unexecuted instantiation: output_log.c:pcmk__xe_get_copy
Unexecuted instantiation: output_text.c:pcmk__xe_get_copy
Unexecuted instantiation: output_xml.c:pcmk__xe_get_copy
Unexecuted instantiation: patchset_display.c:pcmk__xe_get_copy
Unexecuted instantiation: schemas.c:pcmk__xe_get_copy
Unexecuted instantiation: xml.c:pcmk__xe_get_copy
Unexecuted instantiation: xml_attr.c:pcmk__xe_get_copy
Unexecuted instantiation: xml_comment.c:pcmk__xe_get_copy
Unexecuted instantiation: xml_display.c:pcmk__xe_get_copy
Unexecuted instantiation: xml_element.c:pcmk__xe_get_copy
Unexecuted instantiation: xml_idref.c:pcmk__xe_get_copy
Unexecuted instantiation: xml_io.c:pcmk__xe_get_copy
Unexecuted instantiation: xpath.c:pcmk__xe_get_copy
Unexecuted instantiation: acl.c:pcmk__xe_get_copy
Unexecuted instantiation: actions.c:pcmk__xe_get_copy
Unexecuted instantiation: agents.c:pcmk__xe_get_copy
Unexecuted instantiation: cmdline.c:pcmk__xe_get_copy
Unexecuted instantiation: digest.c:pcmk__xe_get_copy
Unexecuted instantiation: health.c:pcmk__xe_get_copy
Unexecuted instantiation: io.c:pcmk__xe_get_copy
Unexecuted instantiation: ipc_client.c:pcmk__xe_get_copy
Unexecuted instantiation: ipc_common.c:pcmk__xe_get_copy
Unexecuted instantiation: ipc_controld.c:pcmk__xe_get_copy
Unexecuted instantiation: ipc_pacemakerd.c:pcmk__xe_get_copy
Unexecuted instantiation: ipc_schedulerd.c:pcmk__xe_get_copy
Unexecuted instantiation: ipc_server.c:pcmk__xe_get_copy
Unexecuted instantiation: messages.c:pcmk__xe_get_copy
Unexecuted instantiation: nodes.c:pcmk__xe_get_copy
Unexecuted instantiation: nvpair.c:pcmk__xe_get_copy
Unexecuted instantiation: options_display.c:pcmk__xe_get_copy
Unexecuted instantiation: patchset.c:pcmk__xe_get_copy
Unexecuted instantiation: procfs.c:pcmk__xe_get_copy
Unexecuted instantiation: rules.c:pcmk__xe_get_copy
Unexecuted instantiation: servers.c:pcmk__xe_get_copy
Unexecuted instantiation: cib.c:pcmk__xe_get_copy
Unexecuted instantiation: ipc_attrd.c:pcmk__xe_get_copy
Unexecuted instantiation: pid.c:pcmk__xe_get_copy
Unexecuted instantiation: attrs.c:pcmk__xe_get_copy
Unexecuted instantiation: strings_fuzzer.c:pcmk__xe_get_copy
Unexecuted instantiation: cib_file_fuzzer.c:pcmk__xe_get_copy
Unexecuted instantiation: cib_client.c:pcmk__xe_get_copy
Unexecuted instantiation: cib_file.c:pcmk__xe_get_copy
Unexecuted instantiation: cib_native.c:pcmk__xe_get_copy
Unexecuted instantiation: cib_ops.c:pcmk__xe_get_copy
Unexecuted instantiation: cib_remote.c:pcmk__xe_get_copy
Unexecuted instantiation: cib_utils.c:pcmk__xe_get_copy
Unexecuted instantiation: remote.c:pcmk__xe_get_copy
Unexecuted instantiation: tls.c:pcmk__xe_get_copy
Unexecuted instantiation: watchdog.c:pcmk__xe_get_copy
Unexecuted instantiation: iso8601_fuzzer.c:pcmk__xe_get_copy
193
194
/*!
195
 * \internal
196
 * \brief Retrieve the value of the \c PCMK_XA_ID XML attribute
197
 *
198
 * \param[in] xml  XML element to check
199
 *
200
 * \return Value of the \c PCMK_XA_ID attribute (may be \c NULL)
201
 */
202
static inline const char *
203
pcmk__xe_id(const xmlNode *xml)
204
0
{
205
0
    return pcmk__xe_get(xml, PCMK_XA_ID);
206
0
}
Unexecuted instantiation: scores_fuzzer.c:pcmk__xe_id
Unexecuted instantiation: results.c:pcmk__xe_id
Unexecuted instantiation: scores.c:pcmk__xe_id
Unexecuted instantiation: strings.c:pcmk__xe_id
Unexecuted instantiation: utils.c:pcmk__xe_id
Unexecuted instantiation: iso8601.c:pcmk__xe_id
Unexecuted instantiation: logging.c:pcmk__xe_id
Unexecuted instantiation: mainloop.c:pcmk__xe_id
Unexecuted instantiation: options.c:pcmk__xe_id
Unexecuted instantiation: output.c:pcmk__xe_id
Unexecuted instantiation: output_log.c:pcmk__xe_id
Unexecuted instantiation: output_text.c:pcmk__xe_id
Unexecuted instantiation: output_xml.c:pcmk__xe_id
Unexecuted instantiation: patchset_display.c:pcmk__xe_id
Unexecuted instantiation: schemas.c:pcmk__xe_id
Unexecuted instantiation: xml.c:pcmk__xe_id
Unexecuted instantiation: xml_attr.c:pcmk__xe_id
Unexecuted instantiation: xml_comment.c:pcmk__xe_id
Unexecuted instantiation: xml_display.c:pcmk__xe_id
Unexecuted instantiation: xml_element.c:pcmk__xe_id
Unexecuted instantiation: xml_idref.c:pcmk__xe_id
Unexecuted instantiation: xml_io.c:pcmk__xe_id
Unexecuted instantiation: xpath.c:pcmk__xe_id
Unexecuted instantiation: acl.c:pcmk__xe_id
Unexecuted instantiation: actions.c:pcmk__xe_id
Unexecuted instantiation: agents.c:pcmk__xe_id
Unexecuted instantiation: cmdline.c:pcmk__xe_id
Unexecuted instantiation: digest.c:pcmk__xe_id
Unexecuted instantiation: health.c:pcmk__xe_id
Unexecuted instantiation: io.c:pcmk__xe_id
Unexecuted instantiation: ipc_client.c:pcmk__xe_id
Unexecuted instantiation: ipc_common.c:pcmk__xe_id
Unexecuted instantiation: ipc_controld.c:pcmk__xe_id
Unexecuted instantiation: ipc_pacemakerd.c:pcmk__xe_id
Unexecuted instantiation: ipc_schedulerd.c:pcmk__xe_id
Unexecuted instantiation: ipc_server.c:pcmk__xe_id
Unexecuted instantiation: messages.c:pcmk__xe_id
Unexecuted instantiation: nodes.c:pcmk__xe_id
Unexecuted instantiation: nvpair.c:pcmk__xe_id
Unexecuted instantiation: options_display.c:pcmk__xe_id
Unexecuted instantiation: patchset.c:pcmk__xe_id
Unexecuted instantiation: procfs.c:pcmk__xe_id
Unexecuted instantiation: rules.c:pcmk__xe_id
Unexecuted instantiation: servers.c:pcmk__xe_id
Unexecuted instantiation: cib.c:pcmk__xe_id
Unexecuted instantiation: ipc_attrd.c:pcmk__xe_id
Unexecuted instantiation: pid.c:pcmk__xe_id
Unexecuted instantiation: attrs.c:pcmk__xe_id
Unexecuted instantiation: strings_fuzzer.c:pcmk__xe_id
Unexecuted instantiation: cib_file_fuzzer.c:pcmk__xe_id
Unexecuted instantiation: cib_client.c:pcmk__xe_id
Unexecuted instantiation: cib_file.c:pcmk__xe_id
Unexecuted instantiation: cib_native.c:pcmk__xe_id
Unexecuted instantiation: cib_ops.c:pcmk__xe_id
Unexecuted instantiation: cib_remote.c:pcmk__xe_id
Unexecuted instantiation: cib_utils.c:pcmk__xe_id
Unexecuted instantiation: remote.c:pcmk__xe_id
Unexecuted instantiation: tls.c:pcmk__xe_id
Unexecuted instantiation: watchdog.c:pcmk__xe_id
Unexecuted instantiation: iso8601_fuzzer.c:pcmk__xe_id
207
208
#ifdef __cplusplus
209
}
210
#endif
211
212
#endif // PCMK__CRM_COMMON_XML_ELEMENT_INTERNAL__H