summaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
authorVijay Bellur <vijay@gluster.com>2010-07-19 05:54:25 +0000
committerAnand V. Avati <avati@dev.gluster.com>2010-07-19 05:11:05 -0700
commita6b90707bf68fe62bf115cfb143d9df69627cb64 (patch)
tree86a98f2e31bd9ec3cdba8b05386ef2d928bc09ed /rpc
parent87ec1b72dac8f50f9eb4ba3b127baca19993ae94 (diff)
Changes for volume commands
Signed-off-by: Vijay Bellur <vijay@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 1161 (gluster volume start command segfaults glusterd) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1161
Diffstat (limited to 'rpc')
-rw-r--r--rpc/rpc-lib/src/protocol-common.h1
-rw-r--r--rpc/xdr/src/cli1-xdr.c37
-rw-r--r--rpc/xdr/src/cli1-xdr.h44
-rw-r--r--rpc/xdr/src/cli1.c29
-rw-r--r--rpc/xdr/src/cli1.h12
-rw-r--r--rpc/xdr/src/cli1.x17
-rw-r--r--rpc/xdr/src/glusterd1-xdr.c40
-rw-r--r--rpc/xdr/src/glusterd1-xdr.h18
-rw-r--r--rpc/xdr/src/glusterd1.c15
-rw-r--r--rpc/xdr/src/glusterd1.h5
-rw-r--r--rpc/xdr/src/glusterd1.x14
11 files changed, 217 insertions, 15 deletions
diff --git a/rpc/rpc-lib/src/protocol-common.h b/rpc/rpc-lib/src/protocol-common.h
index c4fc12a7042..5b6a2c349f7 100644
--- a/rpc/rpc-lib/src/protocol-common.h
+++ b/rpc/rpc-lib/src/protocol-common.h
@@ -84,6 +84,7 @@ enum gf_mgmt_procnum {
GD_MGMT_STAGE_OP,
GD_MGMT_COMMIT_OP,
GD_MGMT_FRIEND_REMOVE,
+ GD_MGMT_FRIEND_UPDATE,
GD_MGMT_CLI_PROBE,
GD_MGMT_CLI_DEPROBE,
GD_MGMT_CLI_LIST_FRIENDS,
diff --git a/rpc/xdr/src/cli1-xdr.c b/rpc/xdr/src/cli1-xdr.c
index 5cce70fa67f..832f762ecdb 100644
--- a/rpc/xdr/src/cli1-xdr.c
+++ b/rpc/xdr/src/cli1-xdr.c
@@ -3,7 +3,7 @@
* It was generated using rpcgen.
*/
-#include "cli1-xdr.h"
+#include "cli1.h"
bool_t
xdr_gf1_cluster_type (XDR *xdrs, gf1_cluster_type *objp)
@@ -24,7 +24,16 @@ xdr_gf1_cli_replace_op (XDR *xdrs, gf1_cli_replace_op *objp)
}
bool_t
-xdr_gf1_cli_enum_friends_list (XDR *xdrs, gf1_cli_enum_friends_list *objp)
+xdr_gf1_cli_friends_list (XDR *xdrs, gf1_cli_friends_list *objp)
+{
+
+ if (!xdr_enum (xdrs, (enum_t *) objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gf1_cli_get_volume (XDR *xdrs, gf1_cli_get_volume *objp)
{
if (!xdr_enum (xdrs, (enum_t *) objp))
@@ -101,6 +110,30 @@ xdr_gf1_cli_peer_list_rsp (XDR *xdrs, gf1_cli_peer_list_rsp *objp)
}
bool_t
+xdr_gf1_cli_get_vol_req (XDR *xdrs, gf1_cli_get_vol_req *objp)
+{
+
+ if (!xdr_int (xdrs, &objp->flags))
+ return FALSE;
+ if (!xdr_bytes (xdrs, (char **)&objp->dict.dict_val, (u_int *) &objp->dict.dict_len, ~0))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gf1_cli_get_vol_rsp (XDR *xdrs, gf1_cli_get_vol_rsp *objp)
+{
+
+ if (!xdr_int (xdrs, &objp->op_ret))
+ return FALSE;
+ if (!xdr_int (xdrs, &objp->op_errno))
+ return FALSE;
+ if (!xdr_bytes (xdrs, (char **)&objp->volumes.volumes_val, (u_int *) &objp->volumes.volumes_len, ~0))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
xdr_gf1_cli_create_vol_req (XDR *xdrs, gf1_cli_create_vol_req *objp)
{
diff --git a/rpc/xdr/src/cli1-xdr.h b/rpc/xdr/src/cli1-xdr.h
index 81948b34aac..56dbef091f3 100644
--- a/rpc/xdr/src/cli1-xdr.h
+++ b/rpc/xdr/src/cli1-xdr.h
@@ -3,8 +3,8 @@
* It was generated using rpcgen.
*/
-#ifndef _GLUSTER1_H_RPCGEN
-#define _GLUSTER1_H_RPCGEN
+#ifndef _CLI1_H_RPCGEN
+#define _CLI1_H_RPCGEN
#include <rpc/rpc.h>
@@ -31,10 +31,15 @@ enum gf1_cli_replace_op {
};
typedef enum gf1_cli_replace_op gf1_cli_replace_op;
-enum gf1_cli_enum_friends_list {
+enum gf1_cli_friends_list {
GF_CLI_LIST_ALL = 1,
};
-typedef enum gf1_cli_enum_friends_list gf1_cli_enum_friends_list;
+typedef enum gf1_cli_friends_list gf1_cli_friends_list;
+
+enum gf1_cli_get_volume {
+ GF_CLI_GET_VOLUME_ALL = 1,
+};
+typedef enum gf1_cli_get_volume gf1_cli_get_volume;
struct gf1_cli_probe_req {
char *hostname;
@@ -79,6 +84,25 @@ struct gf1_cli_peer_list_rsp {
};
typedef struct gf1_cli_peer_list_rsp gf1_cli_peer_list_rsp;
+struct gf1_cli_get_vol_req {
+ int flags;
+ struct {
+ u_int dict_len;
+ char *dict_val;
+ } dict;
+};
+typedef struct gf1_cli_get_vol_req gf1_cli_get_vol_req;
+
+struct gf1_cli_get_vol_rsp {
+ int op_ret;
+ int op_errno;
+ struct {
+ u_int volumes_len;
+ char *volumes_val;
+ } volumes;
+};
+typedef struct gf1_cli_get_vol_rsp gf1_cli_get_vol_rsp;
+
struct gf1_cli_create_vol_req {
char *volname;
gf1_cluster_type type;
@@ -236,13 +260,16 @@ typedef struct gf1_cli_set_vol_rsp gf1_cli_set_vol_rsp;
#if defined(__STDC__) || defined(__cplusplus)
extern bool_t xdr_gf1_cluster_type (XDR *, gf1_cluster_type*);
extern bool_t xdr_gf1_cli_replace_op (XDR *, gf1_cli_replace_op*);
-extern bool_t xdr_gf1_cli_enum_friends_list (XDR *, gf1_cli_enum_friends_list*);
+extern bool_t xdr_gf1_cli_friends_list (XDR *, gf1_cli_friends_list*);
+extern bool_t xdr_gf1_cli_get_volume (XDR *, gf1_cli_get_volume*);
extern bool_t xdr_gf1_cli_probe_req (XDR *, gf1_cli_probe_req*);
extern bool_t xdr_gf1_cli_probe_rsp (XDR *, gf1_cli_probe_rsp*);
extern bool_t xdr_gf1_cli_deprobe_req (XDR *, gf1_cli_deprobe_req*);
extern bool_t xdr_gf1_cli_deprobe_rsp (XDR *, gf1_cli_deprobe_rsp*);
extern bool_t xdr_gf1_cli_peer_list_req (XDR *, gf1_cli_peer_list_req*);
extern bool_t xdr_gf1_cli_peer_list_rsp (XDR *, gf1_cli_peer_list_rsp*);
+extern bool_t xdr_gf1_cli_get_vol_req (XDR *, gf1_cli_get_vol_req*);
+extern bool_t xdr_gf1_cli_get_vol_rsp (XDR *, gf1_cli_get_vol_rsp*);
extern bool_t xdr_gf1_cli_create_vol_req (XDR *, gf1_cli_create_vol_req*);
extern bool_t xdr_gf1_cli_create_vol_rsp (XDR *, gf1_cli_create_vol_rsp*);
extern bool_t xdr_gf1_cli_delete_vol_req (XDR *, gf1_cli_delete_vol_req*);
@@ -267,13 +294,16 @@ extern bool_t xdr_gf1_cli_set_vol_rsp (XDR *, gf1_cli_set_vol_rsp*);
#else /* K&R C */
extern bool_t xdr_gf1_cluster_type ();
extern bool_t xdr_gf1_cli_replace_op ();
-extern bool_t xdr_gf1_cli_enum_friends_list ();
+extern bool_t xdr_gf1_cli_friends_list ();
+extern bool_t xdr_gf1_cli_get_volume ();
extern bool_t xdr_gf1_cli_probe_req ();
extern bool_t xdr_gf1_cli_probe_rsp ();
extern bool_t xdr_gf1_cli_deprobe_req ();
extern bool_t xdr_gf1_cli_deprobe_rsp ();
extern bool_t xdr_gf1_cli_peer_list_req ();
extern bool_t xdr_gf1_cli_peer_list_rsp ();
+extern bool_t xdr_gf1_cli_get_vol_req ();
+extern bool_t xdr_gf1_cli_get_vol_rsp ();
extern bool_t xdr_gf1_cli_create_vol_req ();
extern bool_t xdr_gf1_cli_create_vol_rsp ();
extern bool_t xdr_gf1_cli_delete_vol_req ();
@@ -301,4 +331,4 @@ extern bool_t xdr_gf1_cli_set_vol_rsp ();
}
#endif
-#endif /* !_GLUSTER1_H_RPCGEN */
+#endif /* !_CLI1_H_RPCGEN */
diff --git a/rpc/xdr/src/cli1.c b/rpc/xdr/src/cli1.c
index 008353b9fcd..65252e3c306 100644
--- a/rpc/xdr/src/cli1.c
+++ b/rpc/xdr/src/cli1.c
@@ -107,6 +107,35 @@ gf_xdr_from_cli_peer_list_req (struct iovec outmsg, void *req)
return xdr_serialize_generic (outmsg, (void *)req,
(xdrproc_t)xdr_gf1_cli_peer_list_req);
}
+
+ssize_t
+gf_xdr_serialize_cli_get_vol_rsp (struct iovec outmsg, void *rsp)
+{
+ return xdr_serialize_generic (outmsg, (void *)rsp,
+ (xdrproc_t)xdr_gf1_cli_get_vol_rsp);
+
+}
+
+ssize_t
+gf_xdr_to_cli_get_vol_req (struct iovec inmsg, void *args)
+{
+ return xdr_to_generic (inmsg, (void *)args,
+ (xdrproc_t)xdr_gf1_cli_get_vol_req);
+}
+
+ssize_t
+gf_xdr_to_cli_get_vol_rsp (struct iovec inmsg, void *args)
+{
+ return xdr_to_generic (inmsg, (void *)args,
+ (xdrproc_t)xdr_gf1_cli_get_vol_rsp);
+}
+
+ssize_t
+gf_xdr_from_cli_get_vol_req (struct iovec outmsg, void *req)
+{
+ return xdr_serialize_generic (outmsg, (void *)req,
+ (xdrproc_t)xdr_gf1_cli_get_vol_req);
+}
ssize_t
gf_xdr_serialize_cli_create_vol_rsp (struct iovec outmsg, void *rsp)
{
diff --git a/rpc/xdr/src/cli1.h b/rpc/xdr/src/cli1.h
index ab67084de94..73f9f8d7b41 100644
--- a/rpc/xdr/src/cli1.h
+++ b/rpc/xdr/src/cli1.h
@@ -181,4 +181,16 @@ gf_xdr_to_cli_set_vol_rsp (struct iovec inmsg, void *args);
ssize_t
gf_xdr_from_cli_set_vol_req (struct iovec outmsg, void *req);
+ssize_t
+gf_xdr_serialize_cli_get_vol_rsp (struct iovec outmsg, void *rsp);
+
+ssize_t
+gf_xdr_to_cli_get_vol_req (struct iovec inmsg, void *args);
+
+ssize_t
+gf_xdr_to_cli_get_vol_rsp (struct iovec inmsg, void *args);
+
+ssize_t
+gf_xdr_from_cli_get_vol_req (struct iovec outmsg, void *req);
+
#endif /* !_CLI1_H */
diff --git a/rpc/xdr/src/cli1.x b/rpc/xdr/src/cli1.x
index a8af1b7d658..41f43a4855b 100644
--- a/rpc/xdr/src/cli1.x
+++ b/rpc/xdr/src/cli1.x
@@ -13,10 +13,14 @@
GF_REPLACE_OP_STATUS
} ;
-enum gf1_cli_enum_friends_list {
+enum gf1_cli_friends_list {
GF_CLI_LIST_ALL = 1
} ;
+enum gf1_cli_get_volume {
+ GF_CLI_GET_VOLUME_ALL = 1
+} ;
+
struct gf1_cli_probe_req {
string hostname<>;
} ;
@@ -48,6 +52,17 @@ struct gf1_cli_peer_list_rsp {
opaque friends<>;
} ;
+struct gf1_cli_get_vol_req {
+ int flags;
+ opaque dict<>;
+} ;
+
+struct gf1_cli_get_vol_rsp {
+ int op_ret;
+ int op_errno;
+ opaque volumes<>;
+} ;
+
struct gf1_cli_create_vol_req {
string volname<>;
gf1_cluster_type type;
diff --git a/rpc/xdr/src/glusterd1-xdr.c b/rpc/xdr/src/glusterd1-xdr.c
index 32e6687c866..3ad32d94889 100644
--- a/rpc/xdr/src/glusterd1-xdr.c
+++ b/rpc/xdr/src/glusterd1-xdr.c
@@ -3,11 +3,21 @@
* It was generated using rpcgen.
*/
-#include "glusterd1-xdr.h"
+#include "glusterd1.h"
+
+bool_t
+xdr_glusterd_volume_status (XDR *xdrs, glusterd_volume_status *objp)
+{
+
+ if (!xdr_enum (xdrs, (enum_t *) objp))
+ return FALSE;
+ return TRUE;
+}
bool_t
xdr_gd1_mgmt_probe_req (XDR *xdrs, gd1_mgmt_probe_req *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -19,6 +29,7 @@ xdr_gd1_mgmt_probe_req (XDR *xdrs, gd1_mgmt_probe_req *objp)
bool_t
xdr_gd1_mgmt_probe_rsp (XDR *xdrs, gd1_mgmt_probe_rsp *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -30,6 +41,7 @@ xdr_gd1_mgmt_probe_rsp (XDR *xdrs, gd1_mgmt_probe_rsp *objp)
bool_t
xdr_gd1_mgmt_friend_req (XDR *xdrs, gd1_mgmt_friend_req *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -41,6 +53,7 @@ xdr_gd1_mgmt_friend_req (XDR *xdrs, gd1_mgmt_friend_req *objp)
bool_t
xdr_gd1_mgmt_friend_rsp (XDR *xdrs, gd1_mgmt_friend_rsp *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -56,6 +69,7 @@ xdr_gd1_mgmt_friend_rsp (XDR *xdrs, gd1_mgmt_friend_rsp *objp)
bool_t
xdr_gd1_mgmt_unfriend_req (XDR *xdrs, gd1_mgmt_unfriend_req *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -67,6 +81,7 @@ xdr_gd1_mgmt_unfriend_req (XDR *xdrs, gd1_mgmt_unfriend_req *objp)
bool_t
xdr_gd1_mgmt_unfriend_rsp (XDR *xdrs, gd1_mgmt_unfriend_rsp *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -82,6 +97,7 @@ xdr_gd1_mgmt_unfriend_rsp (XDR *xdrs, gd1_mgmt_unfriend_rsp *objp)
bool_t
xdr_gd1_mgmt_cluster_lock_req (XDR *xdrs, gd1_mgmt_cluster_lock_req *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -91,6 +107,7 @@ xdr_gd1_mgmt_cluster_lock_req (XDR *xdrs, gd1_mgmt_cluster_lock_req *objp)
bool_t
xdr_gd1_mgmt_cluster_lock_rsp (XDR *xdrs, gd1_mgmt_cluster_lock_rsp *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -104,6 +121,7 @@ xdr_gd1_mgmt_cluster_lock_rsp (XDR *xdrs, gd1_mgmt_cluster_lock_rsp *objp)
bool_t
xdr_gd1_mgmt_cluster_unlock_req (XDR *xdrs, gd1_mgmt_cluster_unlock_req *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -113,6 +131,7 @@ xdr_gd1_mgmt_cluster_unlock_req (XDR *xdrs, gd1_mgmt_cluster_unlock_req *objp)
bool_t
xdr_gd1_mgmt_cluster_unlock_rsp (XDR *xdrs, gd1_mgmt_cluster_unlock_rsp *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -126,6 +145,7 @@ xdr_gd1_mgmt_cluster_unlock_rsp (XDR *xdrs, gd1_mgmt_cluster_unlock_rsp *objp)
bool_t
xdr_gd1_mgmt_stage_op_req (XDR *xdrs, gd1_mgmt_stage_op_req *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -139,6 +159,7 @@ xdr_gd1_mgmt_stage_op_req (XDR *xdrs, gd1_mgmt_stage_op_req *objp)
bool_t
xdr_gd1_mgmt_stage_op_rsp (XDR *xdrs, gd1_mgmt_stage_op_rsp *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -154,6 +175,7 @@ xdr_gd1_mgmt_stage_op_rsp (XDR *xdrs, gd1_mgmt_stage_op_rsp *objp)
bool_t
xdr_gd1_mgmt_commit_op_req (XDR *xdrs, gd1_mgmt_commit_op_req *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -167,6 +189,7 @@ xdr_gd1_mgmt_commit_op_req (XDR *xdrs, gd1_mgmt_commit_op_req *objp)
bool_t
xdr_gd1_mgmt_commit_op_rsp (XDR *xdrs, gd1_mgmt_commit_op_rsp *objp)
{
+
if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
sizeof (u_char), (xdrproc_t) xdr_u_char))
return FALSE;
@@ -178,3 +201,18 @@ xdr_gd1_mgmt_commit_op_rsp (XDR *xdrs, gd1_mgmt_commit_op_rsp *objp)
return FALSE;
return TRUE;
}
+
+bool_t
+xdr_gd1_mgmt_friend_update (XDR *xdrs, gd1_mgmt_friend_update *objp)
+{
+
+ if (!xdr_vector (xdrs, (char *)objp->uuid, 16,
+ sizeof (u_char), (xdrproc_t) xdr_u_char))
+ return FALSE;
+ if (!xdr_vector (xdrs, (char *)objp->friend_uuid, 16,
+ sizeof (u_char), (xdrproc_t) xdr_u_char))
+ return FALSE;
+ if (!xdr_string (xdrs, &objp->hostname, ~0))
+ return FALSE;
+ return TRUE;
+}
diff --git a/rpc/xdr/src/glusterd1-xdr.h b/rpc/xdr/src/glusterd1-xdr.h
index ee5fb9c7db3..2fab3fd3b81 100644
--- a/rpc/xdr/src/glusterd1-xdr.h
+++ b/rpc/xdr/src/glusterd1-xdr.h
@@ -14,6 +14,13 @@ extern "C" {
#endif
+enum glusterd_volume_status {
+ GLUSTERD_STATUS_NONE = 0,
+ GLUSTERD_STATUS_STARTED = 0 + 1,
+ GLUSTERD_STATUS_STOPPED = 0 + 2,
+};
+typedef enum glusterd_volume_status glusterd_volume_status;
+
struct gd1_mgmt_probe_req {
u_char uuid[16];
char *hostname;
@@ -114,9 +121,17 @@ struct gd1_mgmt_commit_op_rsp {
};
typedef struct gd1_mgmt_commit_op_rsp gd1_mgmt_commit_op_rsp;
+struct gd1_mgmt_friend_update {
+ u_char uuid[16];
+ u_char friend_uuid[16];
+ char *hostname;
+};
+typedef struct gd1_mgmt_friend_update gd1_mgmt_friend_update;
+
/* the xdr functions */
#if defined(__STDC__) || defined(__cplusplus)
+extern bool_t xdr_glusterd_volume_status (XDR *, glusterd_volume_status*);
extern bool_t xdr_gd1_mgmt_probe_req (XDR *, gd1_mgmt_probe_req*);
extern bool_t xdr_gd1_mgmt_probe_rsp (XDR *, gd1_mgmt_probe_rsp*);
extern bool_t xdr_gd1_mgmt_friend_req (XDR *, gd1_mgmt_friend_req*);
@@ -131,8 +146,10 @@ extern bool_t xdr_gd1_mgmt_stage_op_req (XDR *, gd1_mgmt_stage_op_req*);
extern bool_t xdr_gd1_mgmt_stage_op_rsp (XDR *, gd1_mgmt_stage_op_rsp*);
extern bool_t xdr_gd1_mgmt_commit_op_req (XDR *, gd1_mgmt_commit_op_req*);
extern bool_t xdr_gd1_mgmt_commit_op_rsp (XDR *, gd1_mgmt_commit_op_rsp*);
+extern bool_t xdr_gd1_mgmt_friend_update (XDR *, gd1_mgmt_friend_update*);
#else /* K&R C */
+extern bool_t xdr_glusterd_volume_status ();
extern bool_t xdr_gd1_mgmt_probe_req ();
extern bool_t xdr_gd1_mgmt_probe_rsp ();
extern bool_t xdr_gd1_mgmt_friend_req ();
@@ -147,6 +164,7 @@ extern bool_t xdr_gd1_mgmt_stage_op_req ();
extern bool_t xdr_gd1_mgmt_stage_op_rsp ();
extern bool_t xdr_gd1_mgmt_commit_op_req ();
extern bool_t xdr_gd1_mgmt_commit_op_rsp ();
+extern bool_t xdr_gd1_mgmt_friend_update ();
#endif /* K&R C */
diff --git a/rpc/xdr/src/glusterd1.c b/rpc/xdr/src/glusterd1.c
index 76ceea3fda9..6b079f4f450 100644
--- a/rpc/xdr/src/glusterd1.c
+++ b/rpc/xdr/src/glusterd1.c
@@ -86,6 +86,13 @@ gd_xdr_to_mgmt_friend_req (struct iovec inmsg, void *args)
}
ssize_t
+gd_xdr_to_mgmt_friend_update (struct iovec inmsg, void *args)
+{
+ return xdr_to_generic (inmsg, (void *)args,
+ (xdrproc_t)xdr_gd1_mgmt_friend_update);
+}
+
+ssize_t
gd_xdr_to_mgmt_cluster_lock_req (struct iovec inmsg, void *args)
{
return xdr_to_generic (inmsg, (void *)args,
@@ -165,6 +172,14 @@ gd_xdr_from_mgmt_probe_req (struct iovec outmsg, void *req)
}
ssize_t
+gd_xdr_from_mgmt_friend_update (struct iovec outmsg, void *req)
+{
+ return xdr_serialize_generic (outmsg, (void *)req,
+ (xdrproc_t)xdr_gd1_mgmt_friend_update);
+
+}
+
+ssize_t
gd_xdr_from_mgmt_friend_req (struct iovec outmsg, void *req)
{
return xdr_serialize_generic (outmsg, (void *)req,
diff --git a/rpc/xdr/src/glusterd1.h b/rpc/xdr/src/glusterd1.h
index 44b1c546502..b4c4e3d71d6 100644
--- a/rpc/xdr/src/glusterd1.h
+++ b/rpc/xdr/src/glusterd1.h
@@ -98,4 +98,9 @@ gd_xdr_serialize_mgmt_commit_op_rsp (struct iovec outmsg, void *rsp);
ssize_t
gd_xdr_from_mgmt_commit_op_req (struct iovec outmsg, void *req);
+ssize_t
+gd_xdr_to_mgmt_friend_update (struct iovec outmsg, void *req);
+
+ssize_t
+gd_xdr_from_mgmt_friend_update (struct iovec outmsg, void *req);
#endif /* !_MSG_GD_XDR_H */
diff --git a/rpc/xdr/src/glusterd1.x b/rpc/xdr/src/glusterd1.x
index 935fde4ef1b..f374ea4bff8 100644
--- a/rpc/xdr/src/glusterd1.x
+++ b/rpc/xdr/src/glusterd1.x
@@ -1,3 +1,8 @@
+ enum glusterd_volume_status {
+ GLUSTERD_STATUS_NONE = 0,
+ GLUSTERD_STATUS_STARTED,
+ GLUSTERD_STATUS_STOPPED
+} ;
struct gd1_mgmt_probe_req {
unsigned char uuid[16];
@@ -81,7 +86,8 @@ struct gd1_mgmt_commit_op_rsp {
int op_errno;
} ;
-
-
-
-
+struct gd1_mgmt_friend_update {
+ unsigned char uuid[16];
+ unsigned char friend_uuid[16];
+ string hostname<>;
+} ;