]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/msg_types: prefix addr with type; - for none
authorSage Weil <sage@redhat.com>
Sat, 18 Jun 2016 16:45:11 +0000 (12:45 -0400)
committerSage Weil <sage@redhat.com>
Tue, 18 Oct 2016 20:40:10 +0000 (16:40 -0400)
Previously entityt_addr_t() rendered as ":/0".  Now it is
"-".

Signed-off-by: Sage Weil <sage@redhat.com>
src/msg/msg_types.cc
src/msg/msg_types.h
src/test/common/dns_resolve.cc
src/test/librados_test_stub/TestWatchNotify.cc
src/test/test_addrs.cc

index fb8ec5efea489bd8ae955c51b31ea845ca1df760..f8e6a562fe496717d0fe7f0ea90ca7e83cc79853 100644 (file)
@@ -65,6 +65,17 @@ bool entity_addr_t::parse(const char *s, const char **end)
   memset(this, 0, sizeof(*this));
 
   const char *start = s;
+
+  int newtype = TYPE_DEFAULT;
+  if (strncmp("legacy:", s, 7) == 0) {
+    start += 7;
+    newtype = TYPE_LEGACY;
+  } else if (*s == '-') {
+    *this = entity_addr_t();
+    *end = s + 1;
+    return true;
+  }
+
   bool brackets = false;
   if (*start == '[') {
     start++;
@@ -140,10 +151,24 @@ bool entity_addr_t::parse(const char *s, const char **end)
   if (end)
     *end = p;
 
+  type = newtype;
+
   //cout << *this << std::endl;
   return true;
 }
 
+ostream& operator<<(ostream& out, const entity_addr_t &addr)
+{
+  if (addr.type == entity_addr_t::TYPE_NONE) {
+    return out << "-";
+  }
+  if (addr.type != entity_addr_t::TYPE_DEFAULT) {
+    out << entity_addr_t::get_type_name(addr.type) << ":";
+  }
+  out << addr.get_sockaddr() << '/' << addr.nonce;
+  return out;
+}
+
 ostream& operator<<(ostream& out, const sockaddr_storage &ss)
 {
   char buf[NI_MAXHOST] = { 0 };
index fa83dfbd2952afdeaa5319fe6f65070032d536dd..a0bc924039ddb6a1b89e8e3054325e731e408ec3 100644 (file)
@@ -207,8 +207,16 @@ WRITE_CLASS_ENCODER(ceph_sockaddr_storage)
 struct entity_addr_t {
   typedef enum {
     TYPE_NONE = 0,
-    TYPE_LEGACY = 1,
+    TYPE_LEGACY = 1,  ///< legacy msgr1 protocol (ceph jewel and older)
   } type_t;
+  static const type_t TYPE_DEFAULT = TYPE_LEGACY;
+  static const char *get_type_name(int t) {
+    switch (t) {
+    case TYPE_NONE: return "none";
+    case TYPE_LEGACY: return "legacy";
+    default: return "???";
+    }
+  };
 
   __u32 type;
   __u32 nonce;
@@ -446,10 +454,7 @@ struct entity_addr_t {
 };
 WRITE_CLASS_ENCODER_FEATURES(entity_addr_t)
 
-inline ostream& operator<<(ostream& out, const entity_addr_t &addr)
-{
-  return out << addr.get_sockaddr() << '/' << addr.nonce;
-}
+ostream& operator<<(ostream& out, const entity_addr_t &addr);
 
 inline bool operator==(const entity_addr_t& a, const entity_addr_t& b) { return memcmp(&a, &b, sizeof(a)) == 0; }
 inline bool operator!=(const entity_addr_t& a, const entity_addr_t& b) { return memcmp(&a, &b, sizeof(a)) != 0; }
index d3e0677b8dc9e7ae405b7dc03ae4f133c125cd26..3cf5586e00f8be72f2cf9c4508617c1929ecae8d 100644 (file)
@@ -84,7 +84,7 @@ TEST_F(DNSResolverTest, resolve_ip_addr_fail) {
   ASSERT_EQ(ret, -1);
   std::ostringstream os;
   os << addr;
-  ASSERT_EQ(os.str(), ":/0");
+  ASSERT_EQ(os.str(), "-");
 }
 
 
index 2aacd4861522556cfdbfacf0789e2af16f107b64..6e749a7b92c386faeb13d5b4d10d62844dd06d7a 100644 (file)
@@ -49,7 +49,7 @@ int TestWatchNotify::list_watchers(const std::string& o,
          watcher->watch_handles.begin();
        it != watcher->watch_handles.end(); ++it) {
     obj_watch_t obj;
-    strcpy(obj.addr, ":/0");
+    strcpy(obj.addr, "-");
     obj.watcher_id = static_cast<int64_t>(it->second.gid);
     obj.cookie = it->second.handle;
     obj.timeout_seconds = 30;
index 8cb3d4d7ab969ddb39eda5eee39441d0228c3204..d8251221ec95b5b1186b3075637d263161a79181 100644 (file)
@@ -36,6 +36,14 @@ const char *addr_checks[][3] = {
   { "::", "[::]:0/0", "" },
   { "::zz", "[::]:0/0", "zz" },
   { ":: 12:34", "[::]:0/0", " 12:34" },
+  { "-", "-", "" },
+  { "-asdf", "-", "asdf" },
+  { "legacy:1.2.3.4", "1.2.3.4:0/0", "" },
+  { "legacy:1.2.3.4:12", "1.2.3.4:12/0", "" },
+  { "legacy:1.2.3.4:12/34", "1.2.3.4:12/34", "" },
+  { "msgr2:1.2.3.4", "msgr2:1.2.3.4:0/0", "" },
+  { "msgr2:1.2.3.4:12", "msgr2:1.2.3.4:12/0", "" },
+  { "msgr2:1.2.3.4:12/34", "msgr2:1.2.3.4:12/34", "" },
   { NULL, NULL, NULL },
 };