return;
}
-bool parse_ip_port_vec(const char *s, vector<entity_addr_t>& vec, int type)
+
+bool parse_ip_port_vec(const char *s, vector<entity_addrvec_t>& vec, int type)
{
const char *p = s;
const char *end = p + strlen(p);
return false;
}
//cout << " got " << a << ", rest is '" << p << "'" << std::endl;
- vec.push_back(a);
+ vec.push_back(entity_addrvec_t(a));
while (*p == ',' || *p == ' ' || *p == ';')
p++;
}
extern void vec_to_argv(const char *argv0, std::vector<const char*>& args,
int *argc, const char ***argv);
-extern bool parse_ip_port_vec(const char *s, std::vector<entity_addr_t>& vec,
+extern bool parse_ip_port_vec(const char *s, std::vector<entity_addrvec_t>& vec,
int type=0);
bool ceph_argparse_double_dash(std::vector<const char*> &args,
std::vector<const char*>::iterator &i);
bool for_mkfs,
const std::string &prefix)
{
- vector<entity_addr_t> addrs;
+ vector<entity_addrvec_t> addrs;
if (!parse_ip_port_vec(
ips.c_str(), addrs,
entity_addr_t::TYPE_ANY)) {
string name;
name = prefix;
name += n;
- _add_ambiguous_addr(name, addrs[i], 0, for_mkfs);
+ if (addrs[i].v.size() == 1) {
+ _add_ambiguous_addr(name, addrs[i].front(), 0, for_mkfs);
+ } else {
+ // they specified an addrvec, so let's assume they also specified
+ // the addr *type* and *port*. (we could possibly improve this?)
+ add(name, addrs[i], 0);
+ }
}
return 0;
}
if (!hosts)
return -EINVAL;
- vector<entity_addr_t> addrs;
+ vector<entity_addrvec_t> addrs;
bool success = parse_ip_port_vec(
hosts, addrs,
for_mkfs ? entity_addr_t::TYPE_MSGR2 : entity_addr_t::TYPE_ANY);
n[1] = 0;
string name = prefix;
name += n;
- _add_ambiguous_addr(name, addrs[i], 0);
+ if (addrs[i].v.size() == 1) {
+ _add_ambiguous_addr(name, addrs[i].front(), 0);
+ } else {
+ add(name, addrs[i], 0);
+ }
}
calc_legacy_ranks();
return 0;