The struct and functions will be reused by other modules.

Signed-off-by: Han Zhou <[email protected]>
---
 lib/ovn-util.c      | 28 ++++++++++++++++++++++++++++
 lib/ovn-util.h      | 12 ++++++++++++
 northd/ovn-northd.c | 37 -------------------------------------
 3 files changed, 40 insertions(+), 37 deletions(-)

diff --git a/lib/ovn-util.c b/lib/ovn-util.c
index ba643c5..df18fda 100644
--- a/lib/ovn-util.c
+++ b/lib/ovn-util.c
@@ -521,3 +521,31 @@ ovn_chassis_redirect_name(const char *port_name)
 {
     return xasprintf("cr-%s", port_name);
 }
+
+bool
+ip46_parse_cidr(const char *str, struct v46_ip *prefix, unsigned int *plen)
+{
+    memset(prefix, 0, sizeof *prefix);
+
+    char *error = ip_parse_cidr(str, &prefix->ipv4, plen);
+    if (!error) {
+        prefix->family = AF_INET;
+        return true;
+    }
+    free(error);
+    error = ipv6_parse_cidr(str, &prefix->ipv6, plen);
+    if (!error) {
+        prefix->family = AF_INET6;
+        return true;
+    }
+    free(error);
+    return false;
+}
+
+bool
+ip46_equals(const struct v46_ip *addr1, const struct v46_ip *addr2)
+{
+    return (addr1->family == addr2->family &&
+            (addr1->family == AF_INET ? addr1->ipv4 == addr2->ipv4 :
+             IN6_ARE_ADDR_EQUAL(&addr1->ipv6, &addr2->ipv6)));
+}
diff --git a/lib/ovn-util.h b/lib/ovn-util.h
index d0a2645..4ece077 100644
--- a/lib/ovn-util.h
+++ b/lib/ovn-util.h
@@ -105,4 +105,16 @@ uint32_t ovn_allocate_tnlid(struct hmap *set, const char 
*name, uint32_t min,
                             uint32_t max, uint32_t *hint);
 
 char *ovn_chassis_redirect_name(const char *port_name);
+
+/* An IPv4 or IPv6 address */
+struct v46_ip {
+    int family;
+    union {
+        ovs_be32 ipv4;
+        struct in6_addr ipv6;
+    };
+};
+bool ip46_parse_cidr(const char *str, struct v46_ip *prefix,
+                     unsigned int *plen);
+bool ip46_equals(const struct v46_ip *addr1, const struct v46_ip *addr2);
 #endif
diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c
index 815c727..8a4e63c 100644
--- a/northd/ovn-northd.c
+++ b/northd/ovn-northd.c
@@ -72,15 +72,6 @@ struct northd_state {
     bool paused;
 };
 
-/* An IPv4 or IPv6 address */
-struct v46_ip {
-    int family;
-    union {
-        ovs_be32 ipv4;
-        struct in6_addr ipv6;
-    };
-};
-
 static const char *ovnnb_db;
 static const char *ovnsb_db;
 static const char *unixctl_path;
@@ -6927,34 +6918,6 @@ build_routing_policy_flow(struct hmap *lflows, struct 
ovn_datapath *od,
     ds_destroy(&actions);
 }
 
-static bool
-ip46_parse_cidr(const char *str, struct v46_ip *prefix, unsigned int *plen)
-{
-    memset(prefix, 0, sizeof *prefix);
-
-    char *error = ip_parse_cidr(str, &prefix->ipv4, plen);
-    if (!error) {
-        prefix->family = AF_INET;
-        return true;
-    }
-    free(error);
-    error = ipv6_parse_cidr(str, &prefix->ipv6, plen);
-    if (!error) {
-        prefix->family = AF_INET6;
-        return true;
-    }
-    free(error);
-    return false;
-}
-
-static bool
-ip46_equals(const struct v46_ip *addr1, const struct v46_ip *addr2)
-{
-    return (addr1->family == addr2->family &&
-            (addr1->family == AF_INET ? addr1->ipv4 == addr2->ipv4 :
-             IN6_ARE_ADDR_EQUAL(&addr1->ipv6, &addr2->ipv6)));
-}
-
 struct parsed_route {
     struct ovs_list list_node;
     struct v46_ip prefix;
-- 
2.1.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to