From be4dee16c18e262b168c74face54cf17ca13e2f4 Mon Sep 17 00:00:00 2001 From: Vijay Bellur Date: Thu, 22 Jul 2010 04:17:35 +0000 Subject: Changes for Dynamic Volume Management Signed-off-by: Amar Tumballi Signed-off-by: Vijay Bellur Signed-off-by: Anand V. Avati BUG: 1196 () URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1196 --- rpc/xdr/src/glusterd1-xdr.c | 19 ++++++++++++++++--- rpc/xdr/src/glusterd1-xdr.h | 16 ++++++++++++++-- rpc/xdr/src/glusterd1.c | 15 +++++++++++++++ rpc/xdr/src/glusterd1.h | 6 ++++++ rpc/xdr/src/glusterd1.x | 10 ++++++++-- 5 files changed, 59 insertions(+), 7 deletions(-) (limited to 'rpc') diff --git a/rpc/xdr/src/glusterd1-xdr.c b/rpc/xdr/src/glusterd1-xdr.c index cbca582ee..a6b5b122f 100644 --- a/rpc/xdr/src/glusterd1-xdr.c +++ b/rpc/xdr/src/glusterd1-xdr.c @@ -221,12 +221,25 @@ 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, + if (!xdr_bytes (xdrs, (char **)&objp->friends.friends_val, (u_int *) &objp->friends.friends_len, ~0)) + return FALSE; + if (!xdr_int (xdrs, &objp->port)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gd1_mgmt_friend_update_rsp (XDR *xdrs, gd1_mgmt_friend_update_rsp *objp) +{ + + if (!xdr_vector (xdrs, (char *)objp->uuid, 16, sizeof (u_char), (xdrproc_t) xdr_u_char)) return FALSE; - if (!xdr_string (xdrs, &objp->hostname, ~0)) + if (!xdr_int (xdrs, &objp->op)) return FALSE; - if (!xdr_int (xdrs, &objp->port)) + if (!xdr_int (xdrs, &objp->op_ret)) + return FALSE; + if (!xdr_int (xdrs, &objp->op_errno)) return FALSE; return TRUE; } diff --git a/rpc/xdr/src/glusterd1-xdr.h b/rpc/xdr/src/glusterd1-xdr.h index 0fc186ed6..85ca9b4ba 100644 --- a/rpc/xdr/src/glusterd1-xdr.h +++ b/rpc/xdr/src/glusterd1-xdr.h @@ -129,12 +129,22 @@ 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; + struct { + u_int friends_len; + char *friends_val; + } friends; int port; }; typedef struct gd1_mgmt_friend_update gd1_mgmt_friend_update; +struct gd1_mgmt_friend_update_rsp { + u_char uuid[16]; + int op; + int op_ret; + int op_errno; +}; +typedef struct gd1_mgmt_friend_update_rsp gd1_mgmt_friend_update_rsp; + /* the xdr functions */ #if defined(__STDC__) || defined(__cplusplus) @@ -154,6 +164,7 @@ 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*); +extern bool_t xdr_gd1_mgmt_friend_update_rsp (XDR *, gd1_mgmt_friend_update_rsp*); #else /* K&R C */ extern bool_t xdr_glusterd_volume_status (); @@ -172,6 +183,7 @@ 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 (); +extern bool_t xdr_gd1_mgmt_friend_update_rsp (); #endif /* K&R C */ diff --git a/rpc/xdr/src/glusterd1.c b/rpc/xdr/src/glusterd1.c index 6b079f4f4..f56625154 100644 --- a/rpc/xdr/src/glusterd1.c +++ b/rpc/xdr/src/glusterd1.c @@ -67,6 +67,14 @@ gd_xdr_serialize_mgmt_commit_op_rsp (struct iovec outmsg, void *rsp) return xdr_serialize_generic (outmsg, (void *)rsp, (xdrproc_t)xdr_gd1_mgmt_commit_op_rsp); +} + +ssize_t +gd_xdr_serialize_mgmt_friend_update_rsp (struct iovec outmsg, void *rsp) +{ + return xdr_serialize_generic (outmsg, (void *)rsp, + (xdrproc_t)xdr_gd1_mgmt_friend_update_rsp); + } /* Decode */ @@ -163,6 +171,13 @@ gd_xdr_to_mgmt_commit_op_rsp (struct iovec inmsg, void *args) (xdrproc_t)xdr_gd1_mgmt_commit_op_rsp); } +ssize_t +gd_xdr_to_mgmt_friend_update_rsp (struct iovec inmsg, void *args) +{ + return xdr_to_generic (inmsg, (void *)args, + (xdrproc_t)xdr_gd1_mgmt_friend_update_rsp); +} + ssize_t gd_xdr_from_mgmt_probe_req (struct iovec outmsg, void *req) { diff --git a/rpc/xdr/src/glusterd1.h b/rpc/xdr/src/glusterd1.h index b4c4e3d71..b4822218a 100644 --- a/rpc/xdr/src/glusterd1.h +++ b/rpc/xdr/src/glusterd1.h @@ -103,4 +103,10 @@ gd_xdr_to_mgmt_friend_update (struct iovec outmsg, void *req); ssize_t gd_xdr_from_mgmt_friend_update (struct iovec outmsg, void *req); + +ssize_t +gd_xdr_serialize_mgmt_friend_update_rsp (struct iovec outmsg, void *rsp); + +ssize_t +gd_xdr_to_mgmt_friend_update_rsp (struct iovec inmsg, void *args); #endif /* !_MSG_GD_XDR_H */ diff --git a/rpc/xdr/src/glusterd1.x b/rpc/xdr/src/glusterd1.x index f374ea4bf..28e6de01f 100644 --- a/rpc/xdr/src/glusterd1.x +++ b/rpc/xdr/src/glusterd1.x @@ -88,6 +88,12 @@ struct gd1_mgmt_commit_op_rsp { struct gd1_mgmt_friend_update { unsigned char uuid[16]; - unsigned char friend_uuid[16]; - string hostname<>; + opaque friends<>; } ; + +struct gd1_mgmt_friend_update_rsp { + unsigned char uuid[16]; + int op; + int op_ret; + int op_errno; +} ; -- cgit