This source file includes following definitions.
- pcmk__server_name
- pcmk__server_log_name
- pcmk__server_ipc_name
- pcmk__server_message_type
- pcmk__parse_server
1
2
3
4
5
6
7
8
9
10 #include <crm_internal.h>
11
12 #include <stdio.h>
13
14 #include <crm/crm.h>
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 static struct {
34 const char *log_name;
35 const char *system_names[2];
36 const char *ipc_names[3];
37 const char *message_types[3];
38 } server_info[] = {
39 [pcmk_ipc_unknown] = {
40 NULL,
41 { NULL, NULL, },
42 { NULL, NULL, NULL, },
43 { NULL, NULL, NULL, },
44 },
45
46 [pcmk_ipc_attrd] = {
47 "attribute manager",
48 { PCMK__SERVER_ATTRD, NULL, },
49 { PCMK__VALUE_ATTRD, NULL, NULL, },
50 { PCMK__VALUE_ATTRD, NULL, NULL, },
51 },
52
53 [pcmk_ipc_based] = {
54 "CIB manager",
55 { PCMK__SERVER_BASED, NULL, },
56 { PCMK__SERVER_BASED_RW, PCMK__SERVER_BASED_RO,
57 PCMK__SERVER_BASED_SHM, },
58 { CRM_SYSTEM_CIB, NULL, NULL, },
59 },
60
61 [pcmk_ipc_controld] = {
62 "controller",
63 { PCMK__SERVER_CONTROLD, NULL, },
64 { PCMK__VALUE_CRMD, NULL, NULL, },
65 { PCMK__VALUE_CRMD, CRM_SYSTEM_DC, CRM_SYSTEM_TENGINE, },
66 },
67
68 [pcmk_ipc_execd] = {
69 "executor",
70 { PCMK__SERVER_EXECD, PCMK__SERVER_REMOTED, },
71 { PCMK__VALUE_LRMD, NULL, NULL, },
72 { PCMK__VALUE_LRMD, NULL, NULL, },
73 },
74
75 [pcmk_ipc_fenced] = {
76 "fencer",
77 { PCMK__SERVER_FENCED, NULL, },
78 { PCMK__VALUE_STONITH_NG, NULL, NULL, },
79 { PCMK__VALUE_STONITH_NG, NULL, NULL, },
80 },
81
82 [pcmk_ipc_pacemakerd] = {
83 "launcher",
84 { PCMK__SERVER_PACEMAKERD, NULL, },
85 { CRM_SYSTEM_MCP, NULL, NULL, },
86 { CRM_SYSTEM_MCP, NULL, NULL, },
87 },
88
89 [pcmk_ipc_schedulerd] = {
90 "scheduler",
91 { PCMK__SERVER_SCHEDULERD, NULL, },
92 { CRM_SYSTEM_PENGINE, NULL, NULL, },
93 { CRM_SYSTEM_PENGINE, NULL, NULL, },
94 },
95 };
96
97
98
99
100
101
102
103
104
105
106
107 const char *
108 pcmk__server_name(enum pcmk_ipc_server server)
109 {
110 CRM_CHECK((server > 0) && (server < PCMK__NELEM(server_info)),
111 return NULL);
112 return server_info[server].system_names[0];
113 }
114
115
116
117
118
119
120
121
122
123
124
125 const char *
126 pcmk__server_log_name(enum pcmk_ipc_server server)
127 {
128 CRM_CHECK((server > 0) && (server < PCMK__NELEM(server_info)),
129 return NULL);
130 return server_info[server].log_name;
131 }
132
133
134
135
136
137
138
139
140
141
142
143 const char *
144 pcmk__server_ipc_name(enum pcmk_ipc_server server)
145 {
146 CRM_CHECK((server > 0) && (server < PCMK__NELEM(server_info)),
147 return NULL);
148 return server_info[server].ipc_names[0];
149 }
150
151
152
153
154
155
156
157
158
159
160
161 const char *
162 pcmk__server_message_type(enum pcmk_ipc_server server)
163 {
164 CRM_CHECK((server > 0) && (server < PCMK__NELEM(server_info)),
165 return NULL);
166 return server_info[server].message_types[0];
167 }
168
169
170
171
172
173
174
175
176
177 enum pcmk_ipc_server
178 pcmk__parse_server(const char *text)
179 {
180 if (text == NULL) {
181 return pcmk_ipc_unknown;
182 }
183 for (enum pcmk_ipc_server server = pcmk_ipc_attrd;
184 server <= pcmk_ipc_schedulerd; ++server) {
185
186 int name;
187
188 for (name = 0;
189 (name < 2) && (server_info[server].system_names[name] != NULL);
190 ++name) {
191 if (strcmp(text, server_info[server].system_names[name]) == 0) {
192 return server;
193 }
194 }
195 for (name = 0;
196 (name < 3) && (server_info[server].ipc_names[name] != NULL);
197 ++name) {
198 if (strcmp(text, server_info[server].ipc_names[name]) == 0) {
199 return server;
200 }
201 }
202 for (name = 0;
203 (name < 3) && (server_info[server].message_types[name] != NULL);
204 ++name) {
205 if (strcmp(text, server_info[server].message_types[name]) == 0) {
206 return server;
207 }
208 }
209 }
210 return pcmk_ipc_unknown;
211 }