diff options
author | Amar Tumballi <amar@gluster.com> | 2011-09-20 13:23:08 +0530 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2011-09-21 04:28:43 -0700 |
commit | b274b8792c6bf6d95cad078fadad0ffe4c2bf43a (patch) | |
tree | fd4036f42eced856b8e098204b73475c89aacec9 /xlators/protocol | |
parent | 4a8981eb99c09d76872b8aa167863b49f74b52f2 (diff) |
glusterfs protocol: handshake to log the version of the peer
* As RPC program's name is just used for logging, we now have
'PACKAGE_VERSION' part of the string, which gets logged in client
side.
* From client, we send the PACKAGE_VERSION in handshake dictionary,
which gets logged on serverside handshake.
The change doesn't break any compatibility between client or server
as it would only enhance the logging part of handshake.
Change-Id: Ie7f498af2f5d3f97be37c8d982061cb6021883ce
BUG: 3589
Reviewed-on: http://review.gluster.com/467
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
Diffstat (limited to 'xlators/protocol')
-rw-r--r-- | xlators/protocol/client/src/client-handshake.c | 8 | ||||
-rw-r--r-- | xlators/protocol/server/src/server-handshake.c | 18 | ||||
-rw-r--r-- | xlators/protocol/server/src/server3_1-fops.c | 2 |
3 files changed, 23 insertions, 5 deletions
diff --git a/xlators/protocol/client/src/client-handshake.c b/xlators/protocol/client/src/client-handshake.c index 6f3dc8642bf..7bf95e912d0 100644 --- a/xlators/protocol/client/src/client-handshake.c +++ b/xlators/protocol/client/src/client-handshake.c @@ -995,6 +995,7 @@ client_setvolume (xlator_t *this, struct rpc_clnt *rpc) "asprintf failed while setting process_uuid"); goto fail; } + ret = dict_set_dynstr (options, "process-uuid", process_uuid_xl); if (ret < 0) { gf_log (this->name, GF_LOG_ERROR, @@ -1003,6 +1004,13 @@ client_setvolume (xlator_t *this, struct rpc_clnt *rpc) goto fail; } + ret = dict_set_str (options, "client-version", PACKAGE_VERSION); + if (ret < 0) { + gf_log (this->name, GF_LOG_WARNING, + "failed to set client-version(%s) in handshake msg", + PACKAGE_VERSION); + } + if (this->ctx->cmd_args.volfile_server) { if (this->ctx->cmd_args.volfile_id) { ret = dict_set_str (options, "volfile-key", diff --git a/xlators/protocol/server/src/server-handshake.c b/xlators/protocol/server/src/server-handshake.c index ca7784bad5a..6b35f4decfc 100644 --- a/xlators/protocol/server/src/server-handshake.c +++ b/xlators/protocol/server/src/server-handshake.c @@ -343,6 +343,7 @@ server_setvolume (rpcsvc_request_t *req) dict_t *params = NULL; char *name = NULL; char *process_uuid = NULL; + char *clnt_version = NULL; xlator_t *xl = NULL; char *msg = NULL; char *volfile_key = NULL; @@ -523,13 +524,20 @@ server_setvolume (rpcsvc_request_t *req) "Authentication module not initialized"); } + ret = dict_get_str (params, "client-version", &clnt_version); + if (ret) + gf_log (this->name, GF_LOG_INFO, "client-version not set, " + "may be of older version"); + ret = gf_authenticate (params, config_params, conf->auth_modules); if (ret == AUTH_ACCEPT) { + gf_log (this->name, GF_LOG_INFO, - "accepted client from %s", - (peerinfo)?peerinfo->identifier:""); + "accepted client from %s (version: %s)", + (peerinfo) ? peerinfo->identifier : "<>", + (clnt_version) ? clnt_version : "old"); op_ret = 0; conn->bound_xl = xl; ret = dict_set_str (reply, "ERROR", "Success"); @@ -538,8 +546,10 @@ server_setvolume (rpcsvc_request_t *req) "failed to set error msg"); } else { gf_log (this->name, GF_LOG_ERROR, - "Cannot authenticate client from %s", - (peerinfo)? peerinfo->identifier:"<>"); + "Cannot authenticate client from %s %s", + (peerinfo) ? peerinfo->identifier : "<>", + (clnt_version) ? clnt_version : "old"); + op_ret = -1; op_errno = EACCES; ret = dict_set_str (reply, "ERROR", "Authentication failed"); diff --git a/xlators/protocol/server/src/server3_1-fops.c b/xlators/protocol/server/src/server3_1-fops.c index e869cb48ea5..289489e506e 100644 --- a/xlators/protocol/server/src/server3_1-fops.c +++ b/xlators/protocol/server/src/server3_1-fops.c @@ -5218,7 +5218,7 @@ rpcsvc_actor_t glusterfs3_1_fop_actors[] = { struct rpcsvc_program glusterfs3_1_fop_prog = { - .progname = "GlusterFS-3.1.0", + .progname = "GlusterFS " PACKAGE_VERSION, .prognum = GLUSTER3_1_FOP_PROGRAM, .progver = GLUSTER3_1_FOP_VERSION, .numactors = GLUSTER3_1_FOP_PROCCNT, |