From a65d64e89c96b52b9805b63afbbc3e7b67dbc3ad Mon Sep 17 00:00:00 2001 From: Ajeet Jha Date: Mon, 23 Sep 2013 13:42:21 +0530 Subject: glusterd: Validating invalid log-level under geo-rep config options. Change-Id: I8ff6b48ef41fd6e9ea68c42dfb9878f8a08ed627 BUG: 1010874 Signed-off-by: Ajeet Jha Reviewed-on: http://review.gluster.org/5989 Reviewed-by: Avra Sengupta Reviewed-by: Amar Tumballi Tested-by: Gluster Build System Reviewed-by: Venky Shankar --- xlators/mgmt/glusterd/src/glusterd-geo-rep.c | 16 ++++++++++++++-- xlators/mgmt/glusterd/src/glusterd.h | 7 ++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c index 8bdb9457462..5786694bdf9 100644 --- a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c +++ b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c @@ -42,12 +42,19 @@ glusterd_gsync_read_frm_status (char *path, char *buf, size_t blen); struct gsync_config_opt_vals_ gsync_confopt_vals[] = { {.op_name = "change_detector", .no_of_pos_vals = 2, + .case_sensitive = _gf_true, .values = {"xsync", "changelog"}, }, {.op_name = "special_sync_mode", .no_of_pos_vals = 2, + .case_sensitive = _gf_true, .values = {"partial", "recover"} }, + {.op_name = "log-level", + .no_of_pos_vals = 5, + .case_sensitive = _gf_false, + .values = {"critical", "error", "warning", "info", "debug"} + }, {.op_name = NULL, }, }; @@ -894,8 +901,13 @@ gsync_verify_config_options (dict_t *dict, char **op_errstr, char *volname) if (op_match) { val_match = _gf_false; for (i = 0; i < conf_vals->no_of_pos_vals; i++) { - if (!strcmp (conf_vals->values[i], op_value)) - val_match = _gf_true; + if(conf_vals->case_sensitive){ + if (!strcmp (conf_vals->values[i], op_value)) + val_match = _gf_true; + } else { + if (!strcasecmp (conf_vals->values[i], op_value)) + val_match = _gf_true; + } } if (!val_match) { diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h index 26e9b0c0dbf..4ca30770a0f 100644 --- a/xlators/mgmt/glusterd/src/glusterd.h +++ b/xlators/mgmt/glusterd/src/glusterd.h @@ -326,9 +326,10 @@ typedef struct glusterd_pending_node_ { } glusterd_pending_node_t; struct gsync_config_opt_vals_ { - char *op_name; - int no_of_pos_vals; - char *values[GEO_CONF_MAX_OPT_VALS]; + char *op_name; + int no_of_pos_vals; + gf_boolean_t case_sensitive; + char *values[GEO_CONF_MAX_OPT_VALS]; }; enum glusterd_op_ret { -- cgit