diff options
| author | Kaushal M <kaushal@redhat.com> | 2012-03-07 13:06:38 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2012-03-18 00:52:40 -0700 | 
| commit | 93022c0cc6c22b3a30ded3e109a3fe0a0dce8ca0 (patch) | |
| tree | e3544585d651356c8e8bbb17d62f432855f1ea47 /cli/src/cli-cmd-parser.c | |
| parent | c3bbf6aa6c090fd066ab0079aa1c8ae332309d2a (diff) | |
mgmt/glusterd : volume set validation fixes
This is the new version of the patch by Kaushik at review.gluster.com/699
The following new option types have been introduced:
 * GF_OPTION_TYPE_INTERNET_ADDRESS_LIST
 * GF_OPTION_TYPE_PRIORITY_LIST
 * GF_OPTION_TYPE_SIZE_LIST
and option types of several options in translators have been updated to use the
new types.
valid_internet_address(), valid_ipv4_address() & valid_ipv6_address() functions
has been updated for * wildcard matching. Previously used standalone wildcard
address checking functions have been removed.
Changes have been done to stripe translator to correctly set, update and use
stripe-blocksize. Also minimum value for block-size has been set to 16KB.
Change-Id: I2aa484ff695f6a915a8fc9a9f965cf0344f41d59
BUG: 765248
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: http://review.gluster.com/2899
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Shishir Gowda <shishirng@gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'cli/src/cli-cmd-parser.c')
| -rw-r--r-- | cli/src/cli-cmd-parser.c | 101 | 
1 files changed, 25 insertions, 76 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index d41493b6cf7..4c86ab488c5 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -115,9 +115,9 @@ cli_cmd_bricks_parse (const char **words, int wordcount, int brick_index,                          GF_FREE (tmp_host);                          goto out;                  } -                if (!valid_internet_address (host_name)) { -                        cli_out ("internet address '%s' does not comform to " -			         "standards", host_name); +                if (!valid_internet_address (host_name, _gf_false)) { +                        cli_out ("internet address '%s' does not conform to " +                                 "standards", host_name);                  }                  GF_FREE (tmp_host);                  tmp_list = gf_strdup (brick_list + 1); @@ -635,53 +635,16 @@ out:  }  int32_t -cli_cmd_valid_ip_list (char *iplist) -{ -        int     ret = 0; -        char    *duplist = NULL; -        char    *addr = NULL; -        char    *saveptr = NULL; - -        GF_ASSERT (iplist); -        duplist = gf_strdup (iplist); - -        if (!duplist) { -                ret = -1; -                goto out; -        } - -        addr = strtok_r (duplist, ",", &saveptr); -        if (!addr) { -                ret = -1; -                goto out; -        } -        while (addr) { -                if (!valid_internet_address (addr) && -                    !valid_wildcard_internet_address (addr)) { -                        cli_out ("Invalid ip or wildcard : %s", addr); -                        ret= -1; -                        goto out; -                } -                addr = strtok_r (NULL, ",", &saveptr); -        } -out: -        if (duplist) -                GF_FREE (duplist); -        gf_log ("cli", GF_LOG_INFO, "Returning %d", ret); -        return ret; -} - -int32_t  cli_cmd_volume_set_parse (const char **words, int wordcount, dict_t **options)  { -        dict_t  *dict = NULL; -        char    *volname = NULL; -        int     ret = -1; -        int     count = 0; -        char    *key = NULL; -        char    *value = NULL; -        int     i = 0; -        char    str[50] = {0,}; +        dict_t                  *dict = NULL; +        char                    *volname = NULL; +        int                     ret = -1; +        int                     count = 0; +        char                    *key = NULL; +        char                    *value = NULL; +        int                     i = 0; +        char                    str[50] = {0,};          GF_ASSERT (words);          GF_ASSERT (options); @@ -703,42 +666,28 @@ cli_cmd_volume_set_parse (const char **words, int wordcount, dict_t **options)          if (ret)                  goto out; -        if (wordcount == 3) { -                if (!strcmp (volname, "help")) { -                        ret = dict_set_str (dict, "help", volname); -                        if (ret) -                                goto out; -                } else if (!strcmp (volname, "help-xml")) { -                        ret = dict_set_str (dict, "help-xml", volname); -                        if (ret) -                                goto out; -                } else { -                        ret = -1; +        if ((!strcmp (volname, "help") || !strcmp (volname, "help-xml")) +            && wordcount == 3 ) { +                ret = dict_set_str (dict, volname, volname); +                if (ret)                          goto out; -                } +        } else if (wordcount < 5) { +                ret = -1; +                goto out;          } -          for (i = 3; i < wordcount; i+=2) { -		key = (char *) words[i]; -		value = (char *) words[i+1]; +                key = (char *) words[i]; +                value = (char *) words[i+1]; -		if ( !key || !value) { -			ret = -1; -			goto out; -	        } +                if ( !key || !value) { +                        ret = -1; +                        goto out; +                }                  count++; -                if (!strncmp ("auth.allow", key, sizeof (key)) || -                    !strncmp ("auth.reject", key, sizeof (key))) { -                        ret = cli_cmd_valid_ip_list (value); -                        if (ret) { -                                gf_log ("cli", GF_LOG_ERROR, -                                        "invalid ips given"); -                                goto out; -                        } -                } +                  sprintf (str, "key%d", count);                  ret = dict_set_str (dict, str, key);                  if (ret)  | 
