pacemaker  2.1.1-52dc28db4
Scalable High-Availability cluster resource manager
pe_types.h
Go to the documentation of this file.
1 /*
2  * Copyright 2004-2021 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 PE_TYPES__H
11 # define PE_TYPES__H
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
23 # include <stdbool.h> // bool
24 # include <sys/types.h> // time_t
25 # include <libxml/tree.h> // xmlNode
26 # include <glib.h> // gboolean, guint, GList, GHashTable
27 # include <crm/common/iso8601.h>
28 # include <crm/pengine/common.h>
29 
30 typedef struct pe_node_s pe_node_t;
31 typedef struct pe_action_s pe_action_t;
34 
36  pe_unknown = -1,
37  pe_native = 0,
38  pe_group = 1,
39  pe_clone = 2,
41 };
42 
45  pe_resource_t *(*find_rsc) (pe_resource_t *parent, const char *search,
46  const pe_node_t *node, int flags);
47  /* parameter result must be free'd */
48  char *(*parameter) (pe_resource_t*, pe_node_t*, gboolean, const char*,
51  void (*print) (pe_resource_t*, const char*, long, void*);
52  gboolean (*active) (pe_resource_t*, gboolean);
53  enum rsc_role_e (*state) (const pe_resource_t*, gboolean);
54  pe_node_t *(*location) (const pe_resource_t*, GList**, int);
55  void (*free) (pe_resource_t*);
56  void (*count) (pe_resource_t*);
57  gboolean (*is_filtered) (pe_resource_t*, GList *, gboolean);
59 
61 
68 };
69 
70 enum node_type {
74 };
75 
77 enum pe_restart {
80 };
81 
83 enum pe_find {
84  pe_find_renamed = 0x001,
85  pe_find_anon = 0x002,
86  pe_find_clone = 0x004,
87  pe_find_current = 0x008,
88  pe_find_inactive = 0x010,
89  pe_find_any = 0x020,
90 };
91 
92 // @TODO Make these an enum
93 
94 # define pe_flag_have_quorum 0x00000001ULL
95 # define pe_flag_symmetric_cluster 0x00000002ULL
96 # define pe_flag_maintenance_mode 0x00000008ULL
97 
98 # define pe_flag_stonith_enabled 0x00000010ULL
99 # define pe_flag_have_stonith_resource 0x00000020ULL
100 # define pe_flag_enable_unfencing 0x00000040ULL
101 # define pe_flag_concurrent_fencing 0x00000080ULL
102 
103 # define pe_flag_stop_rsc_orphans 0x00000100ULL
104 # define pe_flag_stop_action_orphans 0x00000200ULL
105 # define pe_flag_stop_everything 0x00000400ULL
106 
107 # define pe_flag_start_failure_fatal 0x00001000ULL
108 
110 # define pe_flag_remove_after_stop 0x00002000ULL
111 
112 # define pe_flag_startup_fencing 0x00004000ULL
113 # define pe_flag_shutdown_lock 0x00008000ULL
114 
115 # define pe_flag_startup_probes 0x00010000ULL
116 # define pe_flag_have_status 0x00020000ULL
117 # define pe_flag_have_remote_nodes 0x00040000ULL
118 
119 # define pe_flag_quick_location 0x00100000ULL
120 # define pe_flag_sanitized 0x00200000ULL
121 
123 # define pe_flag_stdout 0x00400000ULL
124 
126 # define pe_flag_no_counts 0x00800000ULL
127 
131 # define pe_flag_no_compat 0x01000000ULL
132 
133 # define pe_flag_show_scores 0x02000000ULL
134 # define pe_flag_show_utilization 0x04000000ULL
135 
137  xmlNode *input;
139 
140  /* options extracted from the input */
141  char *dc_uuid;
143  const char *stonith_action;
144  const char *placement_strategy;
145 
146  unsigned long long flags;
147 
150 
151  GHashTable *config_hash;
152  GHashTable *tickets;
153 
154  // Actions for which there can be only one (e.g. fence nodeX)
155  GHashTable *singletons;
156 
157  GList *nodes;
158  GList *resources;
163 
164  GList *actions;
165  xmlNode *failed;
166  xmlNode *op_defaults;
167  xmlNode *rsc_defaults;
168 
169  /* stats */
172  int order_id;
174 
175  /* final output */
176  xmlNode *graph;
177 
178  GHashTable *template_rsc_sets;
179  const char *localhost;
180  GHashTable *tags;
181 
184 
185  GList *param_check; // History entries that need to be checked
186  GList *stop_needed; // Containers that need stop actions
187  time_t recheck_by; // Hint to controller to re-run scheduler by this time
188  int ninstances; // Total number of resource instances
189  guint shutdown_lock;// How long (seconds) to lock resources to shutdown node
190  int priority_fencing_delay; // Priority fencing delay
191 
192  void *priv;
193 };
194 
196  /* Clear fail count if parameters changed for un-expired start or monitor
197  * last_failure.
198  */
200 
201  /* Clear fail count if parameters changed for start, monitor, promote, or
202  * migrate_from actions for active resources.
203  */
205 };
206 
208  const char *id;
209  const char *uname;
211 
212  /* @TODO convert these flags into a bitfield */
213  gboolean online;
214  gboolean standby;
215  gboolean standby_onfail;
216  gboolean pending;
217  gboolean unclean;
218  gboolean unseen;
219  gboolean shutdown;
220  gboolean expected_up;
221  gboolean is_dc;
222  gboolean maintenance;
226  gboolean remote_maintenance; /* what the remote-rsc is thinking */
227  gboolean unpacked;
228 
231  GList *running_rsc; /* pe_resource_t* */
232  GList *allocated_rsc; /* pe_resource_t* */
233 
234  GHashTable *attrs; /* char* => char* */
235  GHashTable *utilization;
236  GHashTable *digest_cache;
237  int priority; // calculated based on the priority of resources running on the node
238 };
239 
240 struct pe_node_s {
241  int weight;
242  gboolean fixed;
243  int count;
246 };
247 
248 # define pe_rsc_orphan 0x00000001ULL
249 # define pe_rsc_managed 0x00000002ULL
250 # define pe_rsc_block 0x00000004ULL
251 # define pe_rsc_orphan_container_filler 0x00000008ULL
252 
253 # define pe_rsc_notify 0x00000010ULL
254 # define pe_rsc_unique 0x00000020ULL
255 # define pe_rsc_fence_device 0x00000040ULL
256 # define pe_rsc_promotable 0x00000080ULL
257 
258 # define pe_rsc_provisional 0x00000100ULL
259 # define pe_rsc_allocating 0x00000200ULL
260 # define pe_rsc_merging 0x00000400ULL
261 
262 # define pe_rsc_stop 0x00001000ULL
263 # define pe_rsc_reload 0x00002000ULL
264 # define pe_rsc_allow_remote_remotes 0x00004000ULL
265 # define pe_rsc_critical 0x00008000ULL
266 
267 # define pe_rsc_failed 0x00010000ULL
268 # define pe_rsc_runnable 0x00040000ULL
269 # define pe_rsc_start_pending 0x00080000ULL
270 
271 # define pe_rsc_starting 0x00100000ULL
272 # define pe_rsc_stopping 0x00200000ULL
273 # define pe_rsc_allow_migrate 0x00800000ULL
274 
275 # define pe_rsc_failure_ignored 0x01000000ULL
276 # define pe_rsc_maintenance 0x04000000ULL
277 # define pe_rsc_is_container 0x08000000ULL
278 
279 # define pe_rsc_needs_quorum 0x10000000ULL
280 # define pe_rsc_needs_fencing 0x20000000ULL
281 # define pe_rsc_needs_unfencing 0x40000000ULL
282 
284  pe_graph_none = 0x00000,
287  pe_graph_disable = 0x00004,
288 };
289 
290 /* *INDENT-OFF* */
292  pe_action_pseudo = 0x00001,
296 
300 
301  pe_action_dumped = 0x00100,
303 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
304  pe_action_clear = 0x00400,
305 #endif
306  pe_action_dangle = 0x00800,
307 
308  /* This action requires one or more of its dependencies to be runnable.
309  * We use this to clear the runnable flag before checking dependencies.
310  */
312 
315  pe_action_dedup = 0x08000,
316 
317  pe_action_dc = 0x10000,
318 };
319 /* *INDENT-ON* */
320 
322  char *id;
323  char *clone_name;
324  xmlNode *xml;
325  xmlNode *orig_xml;
326  xmlNode *ops_xml;
327 
330 
335 
337 
338  // @TODO only pe_restart_restart is of interest, so merge into flags
340 
341  int priority;
348 
349  unsigned long long flags;
350 
351  // @TODO merge these into flags
352  gboolean is_remote_node;
354 
357  GList *rsc_cons_lhs; // List of pcmk__colocation_t*
358  GList *rsc_cons; // List of pcmk__colocation_t*
359  GList *rsc_location; // List of pe__location_t*
360  GList *actions; // List of pe_action_t*
361  GList *rsc_tickets; // List of rsc_ticket*
363 
367  GList *running_on; /* pe_node_t* */
368  GHashTable *known_on; /* pe_node_t* */
369  GHashTable *allowed_nodes; /* pe_node_t* */
370 
373 
374  GHashTable *meta;
375  GHashTable *parameters;
376  GHashTable *utilization;
377 
378  GList *children; /* pe_resource_t* */
379  GList *dangling_migrations; /* pe_node_t* */
380 
382  GList *fillers;
383 
384  pe_node_t *pending_node; // Node on which pending_task is happening
385  pe_node_t *lock_node; // Resource is shutdown-locked to this node
386  time_t lock_time; // When shutdown lock started
387 
388  /* Resource parameters may have node-attribute-based rules, which means the
389  * values can vary by node. This table is a cache of parameter name/value
390  * tables for each node (as needed). Use pe_rsc_params() to get the table
391  * for a given node.
392  */
393  GHashTable *parameter_cache; // Key = node name, value = parameters table
394 #if ENABLE_VERSIONED_ATTRS
395  xmlNode *versioned_parameters;
396 #endif
397 };
398 
399 #if ENABLE_VERSIONED_ATTRS
400 // Used as action->action_details if action->rsc is not NULL
401 typedef struct pe_rsc_action_details_s {
402  xmlNode *versioned_parameters;
403  xmlNode *versioned_meta;
404 } pe_rsc_action_details_t;
405 #endif
406 
407 struct pe_action_s {
408  int id;
409  int priority;
410 
413  xmlNode *op_entry;
414 
415  char *task;
416  char *uuid;
417  char *cancel_task;
418  char *reason;
419 
424 
425  GHashTable *meta;
426  GHashTable *extra;
427 
428  /*
429  * These two varables are associated with the constraint logic
430  * that involves first having one or more actions runnable before
431  * then allowing this action to execute.
432  *
433  * These varables are used with features such as 'clone-min' which
434  * requires at minimum X number of cloned instances to be running
435  * before an order dependency can run. Another option that uses
436  * this is 'require-all=false' in ordering constrants. This option
437  * says "only require one instance of a resource to start before
438  * allowing dependencies to start" -- basically, require-all=false is
439  * the same as clone-min=1.
440  */
441 
442  /* current number of known runnable actions in the before list. */
444  /* the number of "before" runnable actions required for this action
445  * to be considered runnable */
447 
448  GList *actions_before; /* pe_action_wrapper_t* */
449  GList *actions_after; /* pe_action_wrapper_t* */
450 
451  /* Some of the above fields could be moved to the details,
452  * except for API backward compatibility.
453  */
454  void *action_details; // varies by type of action
455 };
456 
457 typedef struct pe_ticket_s {
458  char *id;
459  gboolean granted;
460  time_t last_granted;
461  gboolean standby;
462  GHashTable *state;
463 } pe_ticket_t;
464 
465 typedef struct pe_tag_s {
466  char *id;
467  GList *refs;
468 } pe_tag_t;
469 
475 };
476 
481 };
482 
483 /* *INDENT-OFF* */
485  pe_order_none = 0x0, /* deleted */
486  pe_order_optional = 0x1, /* pure ordering, nothing implied */
487  pe_order_apply_first_non_migratable = 0x2, /* Only apply this constraint's ordering if first is not migratable. */
488 
489  pe_order_implies_first = 0x10, /* If 'then' is required, ensure 'first' is too */
490  pe_order_implies_then = 0x20, /* If 'first' is required, ensure 'then' is too */
491  pe_order_promoted_implies_first = 0x40, /* If 'then' is required and then's rsc is promoted, ensure 'first' becomes required too */
492 
493  /* first requires then to be both runnable and migrate runnable. */
495 
496  pe_order_runnable_left = 0x100, /* 'then' requires 'first' to be runnable */
497 
498  pe_order_pseudo_left = 0x200, /* 'then' can only be pseudo if 'first' is runnable */
499  pe_order_implies_then_on_node = 0x400, /* If 'first' is required on 'nodeX',
500  * ensure instances of 'then' on 'nodeX' are too.
501  * Only really useful if 'then' is a clone and 'first' is not
502  */
503  pe_order_probe = 0x800, /* If 'first->rsc' is
504  * - running but about to stop, ignore the constraint
505  * - otherwise, behave as runnable_left
506  */
507 
508  pe_order_restart = 0x1000, /* 'then' is runnable if 'first' is optional or runnable */
509  pe_order_stonith_stop = 0x2000, /* only applies if the action is non-pseudo */
510  pe_order_serialize_only = 0x4000, /* serialize */
511  pe_order_same_node = 0x8000, /* applies only if 'first' and 'then' are on same node */
512 
513  pe_order_implies_first_printed = 0x10000, /* Like ..implies_first but only ensures 'first' is printed, not mandatory */
514  pe_order_implies_then_printed = 0x20000, /* Like ..implies_then but only ensures 'then' is printed, not mandatory */
515 
516  pe_order_asymmetrical = 0x100000, /* Indicates asymmetrical one way ordering constraint. */
517  pe_order_load = 0x200000, /* Only relevant if... */
518  pe_order_one_or_more = 0x400000, /* 'then' is runnable only if one or more of its dependencies are too */
520 
521  pe_order_preserve = 0x1000000, /* Hack for breaking user ordering constraints with container resources */
522  pe_order_then_cancels_first = 0x2000000, // if 'then' becomes required, 'first' becomes optional
523  pe_order_trace = 0x4000000, /* test marker */
524 
525 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
526  // \deprecated Use pe_order_promoted_implies_first instead
528 #endif
529 };
530 /* *INDENT-ON* */
531 
532 typedef struct pe_action_wrapper_s {
537 
538 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
540 #endif
541 
542 #ifdef __cplusplus
543 }
544 #endif
545 
546 #endif // PE_TYPES__H
GHashTable * tags
Definition: pe_types.h:180
enum pe_link_state state
Definition: pe_types.h:534
xmlNode * orig_xml
Definition: pe_types.h:325
struct pe_ticket_s pe_ticket_t
enum rsc_start_requirement needs
Definition: pe_types.h:421
pe_quorum_policy
Definition: pe_types.h:62
enum pe_quorum_policy no_quorum_policy
Definition: pe_types.h:149
GHashTable * known_on
Definition: pe_types.h:368
xmlNode * failed
Definition: pe_types.h:165
xmlNode * ops_xml
Definition: pe_types.h:326
GHashTable * attrs
Definition: pe_types.h:234
gboolean unseen
Definition: pe_types.h:218
GList * rsc_tickets
Definition: pe_types.h:361
gboolean fixed
Definition: pe_types.h:242
GList * rsc_cons
Definition: pe_types.h:358
int runnable_before
Definition: pe_types.h:443
GHashTable * state
Definition: pe_types.h:462
pe_check_parameters
Definition: pe_types.h:195
int priority
Definition: pe_types.h:409
pe_resource_t * container
Definition: pe_types.h:381
pe_node_t * partial_migration_source
Definition: pe_types.h:366
struct crm_time_s crm_time_t
Definition: iso8601.h:32
enum rsc_role_e role
Definition: pe_types.h:371
GList * children
Definition: pe_types.h:378
int count
Definition: pe_types.h:243
resource_alloc_functions_t * cmds
Definition: pe_types.h:334
gboolean standby
Definition: pe_types.h:461
int priority_fencing_delay
Definition: pe_types.h:190
Internal tracking for transition graph creation.
Definition: pe_types.h:473
xmlNode * op_defaults
Definition: pe_types.h:166
Internal tracking for transition graph creation.
Definition: pe_types.h:474
xmlNode * xml
Definition: pe_types.h:324
pe_resource_t * rsc
Definition: pe_types.h:411
enum rsc_role_e next_role
Definition: pe_types.h:372
enum action_fail_response on_fail
Definition: pe_types.h:422
gboolean exclusive_discover
Definition: pe_types.h:353
struct resource_object_functions_s resource_object_functions_t
pe_resource_t * remote_rsc
Definition: pe_types.h:230
char * cancel_task
Definition: pe_types.h:417
GHashTable * meta
Definition: pe_types.h:374
match resource not running anywhere
Definition: pe_types.h:88
resource_object_functions_t * fns
Definition: pe_types.h:333
GHashTable * parameters
Definition: pe_types.h:375
gboolean pending
Definition: pe_types.h:216
char * id
Definition: pe_types.h:466
GList * actions
Definition: pe_types.h:164
Deprecated Pacemaker scheduler API.
int order_id
Deprecated (will be removed in a future release)
Definition: pe_types.h:172
GList * rsc_cons_lhs
Definition: pe_types.h:357
xmlNode * op_entry
Definition: pe_types.h:413
pe_node_t * partial_migration_target
Definition: pe_types.h:365
int migration_threshold
Definition: pe_types.h:345
GHashTable * tickets
Definition: pe_types.h:152
pe_node_t * allocated_to
Definition: pe_types.h:364
pe_action_t * action
Definition: pe_types.h:535
gboolean remote_was_fenced
Definition: pe_types.h:225
pe_discover_e
Definition: pe_types.h:477
char * pending_task
Definition: pe_types.h:347
gboolean remote_requires_reset
Definition: pe_types.h:224
action_fail_response
Definition: common.h:34
char * reason
Definition: pe_types.h:418
char * dc_uuid
Definition: pe_types.h:141
void * action_details
Definition: pe_types.h:454
GList * resources
Definition: pe_types.h:158
GHashTable * extra
Definition: pe_types.h:426
pe_node_t * lock_node
Definition: pe_types.h:385
GList * nodes
Definition: pe_types.h:157
gboolean remote_maintenance
Definition: pe_types.h:226
gboolean is_dc
Definition: pe_types.h:221
pe_link_state
Internal tracking for transition graph creation.
Definition: pe_types.h:471
rsc_recovery_type
Definition: common.h:79
GList * ticket_constraints
Definition: pe_types.h:162
int weight
Definition: pe_types.h:241
GList * dangling_migrations
Definition: pe_types.h:379
guint remote_reconnect_ms
Definition: pe_types.h:346
pe_action_flags
Definition: pe_types.h:291
pe_find
Determine behavior of pe_find_resource_with_flags()
Definition: pe_types.h:83
gboolean unpacked
Definition: pe_types.h:227
int failure_timeout
Definition: pe_types.h:344
xmlNode * rsc_defaults
Definition: pe_types.h:167
match only clone instances
Definition: pe_types.h:86
char * task
Definition: pe_types.h:415
GList * actions_after
Definition: pe_types.h:449
GHashTable * meta
Definition: pe_types.h:425
int blocked_resources
Definition: pe_types.h:182
void(* count)(pe_resource_t *)
Definition: pe_types.h:56
const char * stonith_action
Definition: pe_types.h:143
struct pe_node_shared_s * details
Definition: pe_types.h:244
enum rsc_recovery_type recovery_type
Definition: pe_types.h:336
pe_node_t * node
Definition: pe_types.h:412
unsigned long long flags
Definition: pe_types.h:349
const char * uname
Definition: pe_types.h:209
GHashTable * config_hash
Definition: pe_types.h:151
Internal state tracking when creating graph.
Definition: pe_types.h:317
char * clone_name
Definition: pe_types.h:323
ISO_8601 Date handling.
void(* print)(pe_resource_t *, const char *, long, void *)
Definition: pe_types.h:51
time_t lock_time
Definition: pe_types.h:386
enum pe_restart restart_type
Definition: pe_types.h:339
time_t recheck_by
Definition: pe_types.h:187
GList * actions
Definition: pe_types.h:360
pe_graph_flags
Definition: pe_types.h:283
time_t last_granted
Definition: pe_types.h:460
GHashTable * utilization
Definition: pe_types.h:376
rsc_start_requirement
Definition: common.h:85
void(* free)(pe_resource_t *)
Definition: pe_types.h:55
gboolean standby
Definition: pe_types.h:214
pe_restart
Definition: pe_types.h:77
char * uuid
Definition: pe_types.h:416
gboolean expected_up
Definition: pe_types.h:220
match base name of any clone instance
Definition: pe_types.h:89
enum pe_obj_types variant
Definition: pe_types.h:331
xmlNode * input
Definition: pe_types.h:137
gboolean granted
Definition: pe_types.h:459
const char * placement_strategy
Definition: pe_types.h:144
int rsc_discover_mode
Definition: pe_types.h:245
const char * id
Definition: pe_types.h:208
char * id
Definition: pe_types.h:458
guint shutdown_lock
Definition: pe_types.h:189
GList * refs
Definition: pe_types.h:467
GList * fillers
Definition: pe_types.h:382
GList * running_rsc
Definition: pe_types.h:231
match resource ID or LRM history ID
Definition: pe_types.h:84
gboolean rsc_discovery_enabled
Definition: pe_types.h:223
pe_node_t * dc_node
Definition: pe_types.h:142
enum rsc_role_e(* state)(const pe_resource_t *, gboolean)
Definition: pe_types.h:53
const char * localhost
Definition: pe_types.h:179
gboolean(* is_filtered)(pe_resource_t *, GList *, gboolean)
Definition: pe_types.h:57
gboolean is_remote_node
Definition: pe_types.h:352
pe_node_t * pending_node
Definition: pe_types.h:384
GList * ordering_constraints
Definition: pe_types.h:160
void * variant_opaque
Definition: pe_types.h:332
int sort_index
Definition: pe_types.h:343
GList * param_check
Definition: pe_types.h:185
int disabled_resources
Definition: pe_types.h:183
node_type
Definition: pe_types.h:70
GList * colocation_constraints
Definition: pe_types.h:161
GList * rsc_location
Definition: pe_types.h:359
GHashTable * utilization
Definition: pe_types.h:235
enum rsc_role_e fail_role
Definition: pe_types.h:423
gboolean shutdown
Definition: pe_types.h:219
struct pe_tag_s pe_tag_t
rsc_role_e
Possible roles that a resource can be in.
Definition: common.h:92
GList * running_on
Definition: pe_types.h:367
enum pe_action_flags flags
Definition: pe_types.h:420
gboolean maintenance
Definition: pe_types.h:222
GHashTable * digest_cache
cache of calculated resource digests
Definition: pe_types.h:236
GList * placement_constraints
Definition: pe_types.h:159
pe_working_set_t * cluster
Definition: pe_types.h:328
struct pe_action_wrapper_s pe_action_wrapper_t
GHashTable * parameter_cache
Definition: pe_types.h:393
GHashTable * singletons
Definition: pe_types.h:155
unsigned long long flags
Definition: pe_types.h:146
GList * allocated_rsc
Definition: pe_types.h:232
int stickiness
Definition: pe_types.h:342
gboolean standby_onfail
Definition: pe_types.h:215
enum pe_ordering type
Definition: pe_types.h:533
gboolean unclean
Definition: pe_types.h:217
enum node_type type
Definition: pe_types.h:210
crm_time_t * now
Definition: pe_types.h:138
GHashTable * template_rsc_sets
Definition: pe_types.h:178
pe_ordering
Definition: pe_types.h:484
gboolean online
Definition: pe_types.h:213
uint64_t flags
Definition: remote.c:149
GList * actions_before
Definition: pe_types.h:448
match resource active on specified node
Definition: pe_types.h:87
int required_runnable_before
Definition: pe_types.h:446
GList * stop_needed
Definition: pe_types.h:186
pe_resource_t * parent
Definition: pe_types.h:329
gboolean(* unpack)(pe_resource_t *, pe_working_set_t *)
Definition: pe_types.h:44
pe_obj_types
Definition: pe_types.h:35
gboolean(* active)(pe_resource_t *, gboolean)
Definition: pe_types.h:52
xmlNode * graph
Definition: pe_types.h:176
char * id
Definition: pe_types.h:322
GHashTable * allowed_nodes
Definition: pe_types.h:369
match base name of anonymous clone instances
Definition: pe_types.h:85