pacemaker 2.1.1-77db578727
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
options_internal.h
Go to the documentation of this file.
1/*
2 * Copyright 2006-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 PCMK__OPTIONS_INTERNAL__H
11# define PCMK__OPTIONS_INTERNAL__H
12
13# ifndef PCMK__CONFIG_H
14# define PCMK__CONFIG_H
15# include <config.h> // HAVE_GETOPT, _Noreturn
16# endif
17
18# include <glib.h> // GHashTable
19# include <stdbool.h> // bool
20
21/*
22 * Command-line option handling
23 *
24 * This will all eventually go away as everything is converted to use GOption
25 */
26
27# ifdef HAVE_GETOPT_H
28# include <getopt.h>
29# else
30# define no_argument 0
31# define required_argument 1
32# endif
33
40
41typedef struct pcmk__cli_option_s {
42 /* Fields from 'struct option' in getopt.h */
43 /* name of long option */
44 const char *name;
45 /*
46 * one of no_argument, required_argument, and optional_argument:
47 * whether option takes an argument
48 */
50 /* if not NULL, set *flag to val when option found */
51 int *flag;
52 /* if flag not NULL, value to set *flag to; else return value */
53 int val;
54
55 /* Custom fields */
56 const char *desc;
57 long flags;
59
60void pcmk__set_cli_options(const char *short_options, const char *usage,
61 pcmk__cli_option_t *long_options,
62 const char *app_desc);
63int pcmk__next_cli_option(int argc, char **argv, int *index,
64 const char **longname);
65_Noreturn void pcmk__cli_help(char cmd, crm_exit_t exit_code);
67
68
69/*
70 * Environment variable option handling
71 */
72
73const char *pcmk__env_option(const char *option);
74void pcmk__set_env_option(const char *option, const char *value);
75bool pcmk__env_option_enabled(const char *daemon, const char *option);
76
77
78/*
79 * Cluster option handling
80 */
81
82typedef struct pcmk__cluster_option_s {
83 const char *name;
84 const char *alt_name;
85 const char *type;
86 const char *values;
87 const char *default_value;
88
89 bool (*is_valid)(const char *);
90
91 const char *description_short;
92 const char *description_long;
93
95
96const char *pcmk__cluster_option(GHashTable *options,
97 pcmk__cluster_option_t *option_list, int len,
98 const char *name);
99
100void pcmk__print_option_metadata(const char *name, const char *version,
101 const char *desc_short, const char *desc_long,
102 pcmk__cluster_option_t *option_list, int len);
103
104void pcmk__validate_cluster_options(GHashTable *options,
105 pcmk__cluster_option_t *option_list,
106 int len);
107
108bool pcmk__valid_interval_spec(const char *value);
109bool pcmk__valid_boolean(const char *value);
110bool pcmk__valid_number(const char *value);
111bool pcmk__valid_positive_number(const char *value);
112bool pcmk__valid_quorum(const char *value);
113bool pcmk__valid_script(const char *value);
114bool pcmk__valid_utilization(const char *value);
115
116// from watchdog.c
117long pcmk__get_sbd_timeout(void);
120bool pcmk__valid_sbd_timeout(const char *value);
121
122#endif // PCMK__OPTIONS_INTERNAL__H
uint32_t version
Definition remote.c:1
#define _Noreturn
Definition config.h:652
struct pcmk__cluster_option_s pcmk__cluster_option_t
bool pcmk__valid_interval_spec(const char *value)
Definition options.c:368
void pcmk__cli_option_cleanup(void)
Definition options.c:39
void pcmk__set_env_option(const char *option, const char *value)
Set or unset a Pacemaker environment variable option.
Definition options.c:318
bool pcmk__valid_boolean(const char *value)
Definition options.c:375
bool pcmk__valid_number(const char *value)
Definition options.c:383
long pcmk__get_sbd_timeout(void)
Definition watchdog.c:240
void pcmk__print_option_metadata(const char *name, const char *version, const char *desc_short, const char *desc_long, pcmk__cluster_option_t *option_list, int len)
Definition options.c:556
const char * pcmk__cluster_option(GHashTable *options, pcmk__cluster_option_t *option_list, int len, const char *name)
Definition options.c:537
_Noreturn void pcmk__cli_help(char cmd, crm_exit_t exit_code)
Definition options.c:192
bool pcmk__env_option_enabled(const char *daemon, const char *option)
Definition options.c:355
bool pcmk__valid_quorum(const char *value)
Definition options.c:406
pcmk__cli_option_flags
@ pcmk__option_example
@ pcmk__option_default
@ pcmk__option_hidden
@ pcmk__option_paragraph
const char * pcmk__env_option(const char *option)
Definition options.c:285
void pcmk__validate_cluster_options(GHashTable *options, pcmk__cluster_option_t *option_list, int len)
Definition options.c:594
bool pcmk__get_sbd_sync_resource_startup(void)
Definition watchdog.c:251
bool pcmk__valid_sbd_timeout(const char *value)
Definition watchdog.c:282
long pcmk__auto_watchdog_timeout(void)
Definition watchdog.c:274
bool pcmk__valid_utilization(const char *value)
Definition options.c:439
bool pcmk__valid_positive_number(const char *value)
Definition options.c:397
void pcmk__set_cli_options(const char *short_options, const char *usage, pcmk__cli_option_t *long_options, const char *app_desc)
Definition options.c:105
struct pcmk__cli_option_s pcmk__cli_option_t
int pcmk__next_cli_option(int argc, char **argv, int *index, const char **longname)
Definition options.c:147
bool pcmk__valid_script(const char *value)
Definition options.c:412
char * name
Definition pcmk_fence.c:31
int daemon(int nochdir, int noclose)
enum crm_exit_e crm_exit_t
bool(* is_valid)(const char *)