summaryrefslogtreecommitdiffstats
path: root/include/lrm/lrm_msg.h
blob: 6f671e1d95d6e6f443ebb0638c6a179b86bcd037 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/*
 * Message Define For Local Resource Manager
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */

/*
 * By Huang Zhen <zhenh@cn.ibm.com> 2004/2/23
 *
 */
/*
 * Notice:
 *"status" indicates the exit status code of "status" operation
 * its value is defined in LSB
 *"state" indicates the state of resource, maybe LRM_RSC_BUSY, LRM_RSC_IDLE
 *"opstate" indicates how the op exit.like LRM_OP_DONE,LRM_OP_CANCELLED,
 * LRM_OP_TIMEOUT,LRM_OP_NOTSUPPORTED.
 */	
#ifndef __LRM_MSG_H
#define __LRM_MSG_H 1

#include <lrm/lrm_api.h>

#define LRM_CMDPATH 		HA_VARRUNDIR"/heartbeat/lrm_cmd_sock"
#define LRM_CALLBACKPATH 	HA_VARRUNDIR"/heartbeat/lrm_callback_sock"

/*define the field type used by lrm*/
#define F_LRM_TYPE		"lrm_t"
#define F_LRM_APP		"lrm_app"
#define F_LRM_PID		"lrm_pid"
#define	F_LRM_UID		"lrm_uid"
#define F_LRM_GID		"lrm_gid"
#define F_LRM_RID		"lrm_rid"
#define F_LRM_RTYPE		"lrm_rtype"
#define F_LRM_RTYPES		"lrm_rtypes"
#define F_LRM_RCLASS		"lrm_rclass"
#define F_LRM_RPROVIDER		"lrm_rprovider"
#define F_LRM_RPROVIDERS	"lrm_rproviders"
#define F_LRM_PARAM		"lrm_param"
#define F_LRM_COPYPARAMS	"lrm_copyparams"
#define F_LRM_TIMEOUT		"lrm_timeout"
#define F_LRM_OP		"lrm_op"
#define F_LRM_OPCNT		"lrm_opcount"
#define F_LRM_OPSTATUS		"lrm_opstatus"
#define F_LRM_RC		"lrm_rc"
#define F_LRM_RET		"lrm_ret"
#define F_LRM_CALLID		"lrm_callid"
#define F_LRM_RCOUNT		"lrm_rcount"
#define F_LRM_RIDS		"lrm_rids"
#define F_LRM_DATALEN		"lrm_datalen"
#define F_LRM_DATA		"lrm_data"
#define F_LRM_STATE		"lrm_state"
#define F_LRM_INTERVAL		"lrm_interval"
#define F_LRM_TARGETRC		"lrm_targetrc"
#define F_LRM_LASTRC		"lrm_lastrc"
#define F_LRM_STATUS		"lrm_status"
#define F_LRM_RSCDELETED		"lrm_rscdeleted"
#define F_LRM_METADATA		"lrm_metadata"
#define F_LRM_USERDATA		"lrm_userdata"
#define F_LRM_DELAY		"lrm_delay"
#define F_LRM_T_RUN		"lrm_t_run"
#define F_LRM_T_RCCHANGE	"lrm_t_rcchange"
#define F_LRM_EXEC_TIME		"lrm_exec_time"
#define F_LRM_QUEUE_TIME	"lrm_queue_time"
#define F_LRM_FAIL_REASON	"lrm_fail_reason"
#define F_LRM_ASYNCMON_RC	"lrm_asyncmon_rc"
#define F_LRM_LRMD_PARAM_NAME	"lrm_lrmd_param_name"
#define F_LRM_LRMD_PARAM_VAL	"lrm_lrmd_param_val"

#define	PRINT 	printf("file:%s,line:%d\n",__FILE__,__LINE__);


/*define the message typs between lrmd and client lib*/
#define REGISTER		"reg"
#define GETRSCCLASSES		"rclasses"
#define GETRSCTYPES		"rtypes"
#define GETPROVIDERS		"rproviders"
#define GETRSCMETA		"rmetadata"
#define GETALLRCSES		"getall"
#define GETRSC			"getrsc"
#define GETLASTOP		"getlastop"
#define GETRSCSTATE		"getstate"
#define	SETMONITOR		"setmon"
#define	GETMONITORS		"getmons"
#define FLUSHRSC		"flush"
#define ADDRSC			"addrsc"
#define DELRSC			"delrsc"
#define FAILRSC			"failrsc"
#define PERFORMOP		"op"
#define ISOPSUPPORT		"opspt"
#define OPDONE			"opdone"
#define MONITOR			"monitor"
#define RETURN			"return"
#define FLUSHOPS		"flushops"
#define CANCELOP		"cancelop"
#define	SETLRMDPARAM	"setparam"
#define	GETLRMDPARAM	"getparam"

#define MAX_INT_LEN 		64
#define MAX_NAME_LEN 		255
#define MAX_VALUE_LEN 		255
#define MAX_PARAM_LEN 		1024


GHashTable* copy_str_table(GHashTable* hash_table);
GHashTable* merge_str_tables(GHashTable* old, GHashTable* new);
void free_str_table(GHashTable* hash_table);

 /*  
 * message for no parameter, like unreg,types,getall 
 * they do not include any paramters 
 */ 
struct ha_msg* create_lrm_msg(const char*  msg);

/*
 * message for only one parameter - resource id,
 * like getrsc,delrsc,flush,getstate,getmons
 */
struct ha_msg* create_lrm_rsc_msg(const char* rid, const char* msg);

/* register client message */ 
struct ha_msg* create_lrm_reg_msg(const char* app_name);

/* 	
 * add new resource
 * according to the opinion of Lars, it is awkward that we combine all
 * parameters in to one string. I think so too. So this call may changed soon
 */ 
struct ha_msg* create_lrm_addrsc_msg(const char* rid, const char* class,
	const char* type, const char* provider, GHashTable* parameter);

/*  
 *
 *the return message from lrmd for reg,unreg,addrsc,delrsc,isopsupport. 
 *these return messages only include return code. 
 * 
 */ 
struct ha_msg* create_lrm_ret(int rc, int fields);
 

/*  
 * the return message for a status change monitoring. 
 */ 

struct ha_msg* create_rsc_perform_op_msg (const char* rid, lrm_op_t* op);
		
#endif /* __LRM_MSG_H */