On Tue, Jul 21, 2020 at 2:28 AM Mark Michelson <[email protected]> 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 <[email protected]> > Acked-by: Numan Siddique <[email protected]> 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 > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
