]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/ipaddr: add parse_network helper
authorSage Weil <sage@redhat.com>
Thu, 9 Aug 2018 18:13:18 +0000 (13:13 -0500)
committerSage Weil <sage@redhat.com>
Sun, 12 Aug 2018 22:01:05 +0000 (17:01 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/common/ipaddr.cc
src/include/ipaddr.h

index 0ee96eb9dcc1aaa291a9cf820f265a511aeabf4c..3d03aef6b54cc33aba0b96ba32b104e727f44546 100644 (file)
@@ -10,6 +10,7 @@
 #endif
 
 #include "include/ipaddr.h"
+#include "msg/msg_types.h"
 
 void netmask_ipv4(const struct in_addr *addr,
                         unsigned int prefix_len,
@@ -164,3 +165,16 @@ bool parse_network(const char *s, struct sockaddr_storage *network, unsigned int
 
   return false;
 }
+
+bool parse_network(const char *s,
+                  entity_addr_t *network,
+                  unsigned int *prefix_len)
+{
+  sockaddr_storage ss;
+  bool ret = parse_network(s, &ss, prefix_len);
+  if (ret) {
+    network->set_type(entity_addr_t::TYPE_LEGACY);
+    network->set_sockaddr((sockaddr *)&ss);
+  }
+  return ret;
+}
index 5ded4200a93c93794602a3239557b315b8e80d95..3ec822534f0d439500fec91c59bb5a0fd9cf4137 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef CEPH_IPADDR_H
 #define CEPH_IPADDR_H
 
+class entity_addr_t;
+
 /*
  * Find an IP address that is in the wanted subnet.
  *
@@ -22,7 +24,12 @@ const struct ifaddrs *find_ip_in_subnet(const struct ifaddrs *addrs,
  *
  * if the network string is invalid, return false.
  */
-bool parse_network(const char *s, struct sockaddr_storage *network, unsigned int *prefix_len);
+bool parse_network(const char *s,
+                  struct sockaddr_storage *network,
+                  unsigned int *prefix_len);
+bool parse_network(const char *s,
+                  entity_addr_t *network,
+                  unsigned int *prefix_len);
 
 void netmask_ipv6(const struct in6_addr *addr,
                  unsigned int prefix_len,