mirror of
https://github.com/ceph/ceph
synced 2025-02-24 11:37:37 +00:00
common/options: add addrvec option type
Signed-off-by: Sage Weil <sage@redhat.com>
This commit is contained in:
parent
628927d5ba
commit
30d3095ef2
@ -81,6 +81,7 @@ public:
|
||||
double md_config_t::*,
|
||||
bool md_config_t::*,
|
||||
entity_addr_t md_config_t::*,
|
||||
entity_addrvec_t md_config_t::*,
|
||||
uuid_d md_config_t::*> member_ptr_t;
|
||||
|
||||
// For use when intercepting configuration updates
|
||||
@ -130,7 +131,7 @@ public:
|
||||
|
||||
typedef enum {
|
||||
OPT_INT, OPT_LONGLONG, OPT_STR, OPT_DOUBLE, OPT_FLOAT, OPT_BOOL,
|
||||
OPT_ADDR, OPT_U32, OPT_U64, OPT_UUID
|
||||
OPT_ADDR, OPT_ADDRVEC, OPT_U32, OPT_U64, OPT_UUID
|
||||
} opt_type_t;
|
||||
|
||||
// Create a new md_config_t structure.
|
||||
@ -364,6 +365,7 @@ public:
|
||||
#define OPTION_OPT_FLOAT(name) double name;
|
||||
#define OPTION_OPT_BOOL(name) bool name;
|
||||
#define OPTION_OPT_ADDR(name) entity_addr_t name;
|
||||
#define OPTION_OPT_ADDRVEC(name) entity_addrvec_t name;
|
||||
#define OPTION_OPT_U32(name) uint64_t name;
|
||||
#define OPTION_OPT_U64(name) uint64_t name;
|
||||
#define OPTION_OPT_UUID(name) uuid_d name;
|
||||
@ -381,6 +383,7 @@ public:
|
||||
#undef OPTION_OPT_FLOAT
|
||||
#undef OPTION_OPT_BOOL
|
||||
#undef OPTION_OPT_ADDR
|
||||
#undef OPTION_OPT_ADDRVEC
|
||||
#undef OPTION_OPT_U32
|
||||
#undef OPTION_OPT_U64
|
||||
#undef OPTION_OPT_UUID
|
||||
|
@ -242,6 +242,12 @@ int Option::parse_value(
|
||||
return -EINVAL;
|
||||
}
|
||||
*out = addr;
|
||||
} else if (type == Option::TYPE_ADDR) {
|
||||
entity_addrvec_t addr;
|
||||
if (!addr.parse(val.c_str())){
|
||||
return -EINVAL;
|
||||
}
|
||||
*out = addr;
|
||||
} else if (type == Option::TYPE_UUID) {
|
||||
uuid_d uuid;
|
||||
if (!uuid.parse(val.c_str())) {
|
||||
|
@ -19,6 +19,7 @@ struct Option {
|
||||
TYPE_FLOAT,
|
||||
TYPE_BOOL,
|
||||
TYPE_ADDR,
|
||||
TYPE_ADDRVEC,
|
||||
TYPE_UUID,
|
||||
TYPE_SIZE,
|
||||
TYPE_SECS,
|
||||
@ -32,6 +33,7 @@ struct Option {
|
||||
case TYPE_FLOAT: return "double";
|
||||
case TYPE_BOOL: return "bool";
|
||||
case TYPE_ADDR: return "entity_addr_t";
|
||||
case TYPE_ADDRVEC: return "entity_addrvec_t";
|
||||
case TYPE_UUID: return "uuid_d";
|
||||
case TYPE_SIZE: return "size_t";
|
||||
case TYPE_SECS: return "secs";
|
||||
@ -86,6 +88,7 @@ struct Option {
|
||||
double,
|
||||
bool,
|
||||
entity_addr_t,
|
||||
entity_addrvec_t,
|
||||
std::chrono::seconds,
|
||||
size_t,
|
||||
uuid_d>;
|
||||
@ -154,6 +157,8 @@ struct Option {
|
||||
value = false; break;
|
||||
case TYPE_ADDR:
|
||||
value = entity_addr_t(); break;
|
||||
case TYPE_ADDRVEC:
|
||||
value = entity_addrvec_t(); break;
|
||||
case TYPE_UUID:
|
||||
value = uuid_d(); break;
|
||||
case TYPE_SIZE:
|
||||
|
Loading…
Reference in New Issue
Block a user