diff mbox series

[ovs-dev,ovn,v2,1/3] Add IP address normalization to ovn-utils.

Message ID 20200723193651.3503692-1-mmichels@redhat.com
State Superseded
Headers show
Series [ovs-dev,ovn,v2,1/3] Add IP address normalization to ovn-utils. | expand

Commit Message

Mark Michelson July 23, 2020, 7:36 p.m. UTC
This moves a couple of existing IP address normalization routines from
ovn-nbctl.c to ovn-util.c. It also adds a new normalization function for
a v46_address. This new function is not used in this commit but will be
used in a future commit in this series.

Signed-off-by: Mark Michelson <mmichels@redhat.com>
---
 lib/ovn-util.c        | 39 +++++++++++++++++++++++++++++++++++++++
 lib/ovn-util.h        |  4 ++++
 utilities/ovn-nbctl.c | 29 -----------------------------
 3 files changed, 43 insertions(+), 29 deletions(-)

Comments

Numan Siddique July 24, 2020, 8:39 a.m. UTC | #1
On Fri, Jul 24, 2020 at 1:07 AM Mark Michelson <mmichels@redhat.com> wrote:

> This moves a couple of existing IP address normalization routines from
> ovn-nbctl.c to ovn-util.c. It also adds a new normalization function for
> a v46_address. This new function is not used in this commit but will be
> used in a future commit in this series.
>
> Signed-off-by: Mark Michelson <mmichels@redhat.com>
>

Acked-by: Numan Siddique <numans@ovn.org>

Thanks
Numan


> ---
>  lib/ovn-util.c        | 39 +++++++++++++++++++++++++++++++++++++++
>  lib/ovn-util.h        |  4 ++++
>  utilities/ovn-nbctl.c | 29 -----------------------------
>  3 files changed, 43 insertions(+), 29 deletions(-)
>
> diff --git a/lib/ovn-util.c b/lib/ovn-util.c
> index f09fdaffe..cdb5e18fb 100644
> --- a/lib/ovn-util.c
> +++ b/lib/ovn-util.c
> @@ -589,6 +589,45 @@ ip46_equals(const struct v46_ip *addr1, const struct
> v46_ip *addr2)
>               IN6_ARE_ADDR_EQUAL(&addr1->ipv6, &addr2->ipv6)));
>  }
>
> +/* The caller must free the returned string. */
> +char *
> +normalize_ipv4_prefix(ovs_be32 ipv4, unsigned int plen)
> +{
> +    ovs_be32 network = ipv4 & be32_prefix_mask(plen);
> +    if (plen == 32) {
> +        return xasprintf(IP_FMT, IP_ARGS(network));
> +    } else {
> +        return xasprintf(IP_FMT "/%d", IP_ARGS(network), plen);
> +    }
> +}
> +
> +/* The caller must free the returned string. */
> +char *
> +normalize_ipv6_prefix(struct in6_addr ipv6, unsigned int plen)
> +{
> +    char network_s[INET6_ADDRSTRLEN];
> +
> +    struct in6_addr mask = ipv6_create_mask(plen);
> +    struct in6_addr network = ipv6_addr_bitand(&ipv6, &mask);
> +
> +    inet_ntop(AF_INET6, &network, network_s, INET6_ADDRSTRLEN);
> +    if (plen == 128) {
> +        return xasprintf("%s", network_s);
> +    } else {
> +        return xasprintf("%s/%d", network_s, plen);
> +    }
> +}
> +
> +char *
> +normalize_v46_prefix(const struct v46_ip *prefix, unsigned int plen)
> +{
> +    if (prefix->family == AF_INET) {
> +        return normalize_ipv4_prefix(prefix->ipv4, plen);
> +    } else {
> +        return normalize_ipv6_prefix(prefix->ipv6, plen);
> +    }
> +}
> +
>  char *
>  str_tolower(const char *orig)
>  {
> diff --git a/lib/ovn-util.h b/lib/ovn-util.h
> index 4e08ee01e..0f7b501f1 100644
> --- a/lib/ovn-util.h
> +++ b/lib/ovn-util.h
> @@ -144,6 +144,10 @@ 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);
>
> +char *normalize_ipv4_prefix(ovs_be32 ipv4, unsigned int plen);
> +char *normalize_ipv6_prefix(struct in6_addr ipv6, unsigned int plen);
> +char *normalize_v46_prefix(const struct v46_ip *prefix, unsigned int
> plen);
> +
>  /* Returns a lowercase copy of orig.
>   * Caller must free the returned string.
>   */
> diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
> index 7578b9928..0079ad5a6 100644
> --- a/utilities/ovn-nbctl.c
> +++ b/utilities/ovn-nbctl.c
> @@ -3482,35 +3482,6 @@ nbctl_dhcp_options_list(struct ctl_context *ctx)
>      free(nodes);
>  }
>
> -/* The caller must free the returned string. */
> -static char *
> -normalize_ipv4_prefix(ovs_be32 ipv4, unsigned int plen)
> -{
> -    ovs_be32 network = ipv4 & be32_prefix_mask(plen);
> -    if (plen == 32) {
> -        return xasprintf(IP_FMT, IP_ARGS(network));
> -    } else {
> -        return xasprintf(IP_FMT"/%d", IP_ARGS(network), plen);
> -    }
> -}
> -
> -/* The caller must free the returned string. */
> -static char *
> -normalize_ipv6_prefix(struct in6_addr ipv6, unsigned int plen)
> -{
> -    char network_s[INET6_ADDRSTRLEN];
> -
> -    struct in6_addr mask = ipv6_create_mask(plen);
> -    struct in6_addr network = ipv6_addr_bitand(&ipv6, &mask);
> -
> -    inet_ntop(AF_INET6, &network, network_s, INET6_ADDRSTRLEN);
> -    if (plen == 128) {
> -        return xasprintf("%s", network_s);
> -    } else {
> -        return xasprintf("%s/%d", network_s, plen);
> -    }
> -}
> -
>  static char *
>  normalize_ipv4_prefix_str(const char *orig_prefix)
>  {
> --
> 2.25.4
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>
diff mbox series

Patch

diff --git a/lib/ovn-util.c b/lib/ovn-util.c
index f09fdaffe..cdb5e18fb 100644
--- a/lib/ovn-util.c
+++ b/lib/ovn-util.c
@@ -589,6 +589,45 @@  ip46_equals(const struct v46_ip *addr1, const struct v46_ip *addr2)
              IN6_ARE_ADDR_EQUAL(&addr1->ipv6, &addr2->ipv6)));
 }
 
+/* The caller must free the returned string. */
+char *
+normalize_ipv4_prefix(ovs_be32 ipv4, unsigned int plen)
+{
+    ovs_be32 network = ipv4 & be32_prefix_mask(plen);
+    if (plen == 32) {
+        return xasprintf(IP_FMT, IP_ARGS(network));
+    } else {
+        return xasprintf(IP_FMT "/%d", IP_ARGS(network), plen);
+    }
+}
+
+/* The caller must free the returned string. */
+char *
+normalize_ipv6_prefix(struct in6_addr ipv6, unsigned int plen)
+{
+    char network_s[INET6_ADDRSTRLEN];
+
+    struct in6_addr mask = ipv6_create_mask(plen);
+    struct in6_addr network = ipv6_addr_bitand(&ipv6, &mask);
+
+    inet_ntop(AF_INET6, &network, network_s, INET6_ADDRSTRLEN);
+    if (plen == 128) {
+        return xasprintf("%s", network_s);
+    } else {
+        return xasprintf("%s/%d", network_s, plen);
+    }
+}
+
+char *
+normalize_v46_prefix(const struct v46_ip *prefix, unsigned int plen)
+{
+    if (prefix->family == AF_INET) {
+        return normalize_ipv4_prefix(prefix->ipv4, plen);
+    } else {
+        return normalize_ipv6_prefix(prefix->ipv6, plen);
+    }
+}
+
 char *
 str_tolower(const char *orig)
 {
diff --git a/lib/ovn-util.h b/lib/ovn-util.h
index 4e08ee01e..0f7b501f1 100644
--- a/lib/ovn-util.h
+++ b/lib/ovn-util.h
@@ -144,6 +144,10 @@  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);
 
+char *normalize_ipv4_prefix(ovs_be32 ipv4, unsigned int plen);
+char *normalize_ipv6_prefix(struct in6_addr ipv6, unsigned int plen);
+char *normalize_v46_prefix(const struct v46_ip *prefix, unsigned int plen);
+
 /* Returns a lowercase copy of orig.
  * Caller must free the returned string.
  */
diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
index 7578b9928..0079ad5a6 100644
--- a/utilities/ovn-nbctl.c
+++ b/utilities/ovn-nbctl.c
@@ -3482,35 +3482,6 @@  nbctl_dhcp_options_list(struct ctl_context *ctx)
     free(nodes);
 }
 
-/* The caller must free the returned string. */
-static char *
-normalize_ipv4_prefix(ovs_be32 ipv4, unsigned int plen)
-{
-    ovs_be32 network = ipv4 & be32_prefix_mask(plen);
-    if (plen == 32) {
-        return xasprintf(IP_FMT, IP_ARGS(network));
-    } else {
-        return xasprintf(IP_FMT"/%d", IP_ARGS(network), plen);
-    }
-}
-
-/* The caller must free the returned string. */
-static char *
-normalize_ipv6_prefix(struct in6_addr ipv6, unsigned int plen)
-{
-    char network_s[INET6_ADDRSTRLEN];
-
-    struct in6_addr mask = ipv6_create_mask(plen);
-    struct in6_addr network = ipv6_addr_bitand(&ipv6, &mask);
-
-    inet_ntop(AF_INET6, &network, network_s, INET6_ADDRSTRLEN);
-    if (plen == 128) {
-        return xasprintf("%s", network_s);
-    } else {
-        return xasprintf("%s/%d", network_s, plen);
-    }
-}
-
 static char *
 normalize_ipv4_prefix_str(const char *orig_prefix)
 {