]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
msg/Messenger: add get_myaddr_legacy()
authorSage Weil <sage@redhat.com>
Sun, 3 Feb 2019 18:08:18 +0000 (12:08 -0600)
committerSage Weil <sage@redhat.com>
Thu, 7 Feb 2019 12:12:43 +0000 (06:12 -0600)
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>
src/msg/Messenger.h

index fd23813418ad0cfed92d250d99d73bed949115df..c0614b00ddb15f5b831e92a55c43a3df5e3aa9e8 100644 (file)
@@ -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
    */