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_LOCATION_INTERNAL__H
11 #define PCMK__CRM_COMMON_LOCATION_INTERNAL__H
12
13 #include <glib.h> // GList
14
15 #include <crm/common/nodes_internal.h> // enum pcmk__probe_mode
16 #include <crm/common/resources.h> // enum rsc_role_e
17 #include <crm/common/scheduler_types.h> // pcmk_resource_t
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23 //! Location constraint object
24 typedef struct {
25 char *id; // XML ID of location constraint
26 pcmk_resource_t *rsc; // Resource with location preference
27 enum rsc_role_e role_filter; // Limit to instances with this role
28 enum pcmk__probe_mode probe_mode; // How to probe resource on node
29 GList *nodes; // Copies of affected nodes, with score
30 } pcmk__location_t;
31
32 #ifdef __cplusplus
33 }
34 #endif
35
36 #endif // PCMK__CRM_COMMON_LOCATION_INTERNAL__H