This returns a legacy v1 address out of a v1 or any address. It's
intended to be used in contexts where we *always* want a v1 address,
like SimpleMessenger.
Signed-off-by: Sage Weil <sage@redhat.com>
return *my_addrs;
}
+ /**
+ * get legacy addr for myself, suitable for protocol v1
+ *
+ * Note that myaddrs might be a proper addrvec with v1 in it, or it might be an
+ * 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;
+ }
+
+
/**
* set messenger's instance
*/