libceph: generalize addr/ip parsing based on delimiter
[platform/kernel/linux-rpi.git] / net / ceph / messenger.c
index 57d043b..929ed91 100644 (file)
@@ -1267,30 +1267,31 @@ static int ceph_parse_server_name(const char *name, size_t namelen,
  */
 int ceph_parse_ips(const char *c, const char *end,
                   struct ceph_entity_addr *addr,
-                  int max_count, int *count)
+                  int max_count, int *count, char delim)
 {
        int i, ret = -EINVAL;
        const char *p = c;
 
        dout("parse_ips on '%.*s'\n", (int)(end-c), c);
        for (i = 0; i < max_count; i++) {
+               char cur_delim = delim;
                const char *ipend;
                int port;
-               char delim = ',';
 
                if (*p == '[') {
-                       delim = ']';
+                       cur_delim = ']';
                        p++;
                }
 
-               ret = ceph_parse_server_name(p, end - p, &addr[i], delim, &ipend);
+               ret = ceph_parse_server_name(p, end - p, &addr[i], cur_delim,
+                                            &ipend);
                if (ret)
                        goto bad;
                ret = -EINVAL;
 
                p = ipend;
 
-               if (delim == ']') {
+               if (cur_delim == ']') {
                        if (*p != ']') {
                                dout("missing matching ']'\n");
                                goto bad;
@@ -1326,11 +1327,11 @@ int ceph_parse_ips(const char *c, const char *end,
                addr[i].type = CEPH_ENTITY_ADDR_TYPE_LEGACY;
                addr[i].nonce = 0;
 
-               dout("parse_ips got %s\n", ceph_pr_addr(&addr[i]));
+               dout("%s got %s\n", __func__, ceph_pr_addr(&addr[i]));
 
                if (p == end)
                        break;
-               if (*p != ',')
+               if (*p != delim)
                        goto bad;
                p++;
        }