Return either the actual legacy addr, or an any addr as a legacy addr. If
neither is available, lie and return a v2 (or other) addr as a legacy adr.
Signed-off-by: Sage Weil <sage@redhat.com>
* ANY addr (if i am a pure client).
*/
entity_addr_t get_myaddr_legacy() {
- auto& av = *my_addrs;
- for (auto& a : av.v) {
- if (a.is_legacy()) {
- return a;
- }
- if (a.is_any()) {
- auto b = a;
- b.set_type(entity_addr_t::TYPE_LEGACY);
- return b;
- }
- }
- // hrm... lie!
- auto a = av.front();
- a.set_type(entity_addr_t::TYPE_LEGACY);
- return a;
+ return my_addrs->as_legacy_addr();
}
}
return entity_addr_t();
}
+ entity_addr_t as_legacy_addr() const {
+ for (auto& a : v) {
+ if (a.is_legacy()) {
+ return a;
+ }
+ if (a.is_any()) {
+ auto b = a;
+ b.set_type(entity_addr_t::TYPE_LEGACY);
+ return b;
+ }
+ }
+ // hrm... lie!
+ auto a = front();
+ a.set_type(entity_addr_t::TYPE_LEGACY);
+ return a;
+ }
entity_addr_t front() const {
if (!v.empty()) {
return v.front();