From: Sage Weil Date: Sun, 3 Feb 2019 18:08:18 +0000 (-0600) Subject: msg/Messenger: add get_myaddr_legacy() X-Git-Tag: v14.1.0~184^2~14 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2bc41b44858b470d9287ce5a4b872044b424399b;p=ceph.git msg/Messenger: add get_myaddr_legacy() 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 --- diff --git a/src/msg/Messenger.h b/src/msg/Messenger.h index fd23813418ad..c0614b00ddb1 100644 --- a/src/msg/Messenger.h +++ b/src/msg/Messenger.h @@ -166,6 +166,31 @@ public: 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 */