On Fri, Oct 17, 2025 at 1:59 PM Mairtin O'Loingsigh via dev < [email protected]> wrote:
> Move these helpers to utils so ovn-ic-nbctl can also use them. > > Signed-off-by: Mairtin O'Loingsigh <[email protected]> > --- > Hi Mairtin, thank you for the v5. I have only one nit down below. > lib/ovn-util.c | 101 ++++++++++++++++++++++++++++++++++++++++++ > lib/ovn-util.h | 14 ++++++ > utilities/ovn-nbctl.c | 98 ---------------------------------------- > 3 files changed, 115 insertions(+), 98 deletions(-) > > diff --git a/lib/ovn-util.c b/lib/ovn-util.c > index 910f67304..d27983d1e 100644 > --- a/lib/ovn-util.c > +++ b/lib/ovn-util.c > @@ -1547,3 +1547,104 @@ ovn_is_valid_vni(int64_t vni) > { > return vni >= 0 && (vni <= (1 << 24) - 1); > } > + > +struct sset * > +lrp_network_sset(const char **networks, int n_networks) > +{ > + struct sset *network_set = xzalloc(sizeof *network_set); > + sset_init(network_set); > + for (int i = 0; i < n_networks; i++) { > + char *norm = normalize_prefix_str(networks[i]); > + if (!norm) { > + sset_destroy(network_set); > + free(network_set); > + return NULL; > + } > + > + sset_add_and_free(network_set, norm); > + } > + > + return network_set; > +} > + > +char * > +normalize_ipv4_prefix_str(const char *orig_prefix) > +{ > + unsigned int plen; > + ovs_be32 ipv4; > + char *error; > + > + error = ip_parse_cidr(orig_prefix, &ipv4, &plen); > + if (error) { > + free(error); > + return NULL; > + } > + > + return normalize_ipv4_prefix(ipv4, plen); > +} > + > +char * > +normalize_ipv6_prefix_str(const char *orig_prefix) > +{ > + unsigned int plen; > + struct in6_addr ipv6; > + char *error; > + > + error = ipv6_parse_cidr(orig_prefix, &ipv6, &plen); > + if (error) { > + free(error); > + return NULL; > + } > + > + return normalize_ipv6_prefix(&ipv6, plen); > +} > + > +char * > +normalize_prefix_str(const char *orig_prefix) > +{ > + char *ret; > + > + ret = normalize_ipv4_prefix_str(orig_prefix); > + if (!ret) { > + ret = normalize_ipv6_prefix_str(orig_prefix); > + } > + > + return ret; > +} > + > +char * > +normalize_ipv4_addr_str(const char *orig_addr) > +{ > + ovs_be32 ipv4; > + > + if (!ip_parse(orig_addr, &ipv4)) { > + return NULL; > + } > + > + return normalize_ipv4_prefix(ipv4, 32); > +} > + > +char * > +normalize_ipv6_addr_str(const char *orig_addr) > +{ > + struct in6_addr ipv6; > + > + if (!ipv6_parse(orig_addr, &ipv6)) { > + return NULL; > + } > + > + return normalize_ipv6_prefix(&ipv6, 128); > +} > + > +char * > +normalize_addr_str(const char *orig_addr) > +{ > + char *ret; > + > + ret = normalize_ipv4_addr_str(orig_addr); > + if (!ret) { > + ret = normalize_ipv6_addr_str(orig_addr); > + } > + > + return ret; > +} > diff --git a/lib/ovn-util.h b/lib/ovn-util.h > index 3aca4ca75..26b7e133d 100644 > --- a/lib/ovn-util.h > +++ b/lib/ovn-util.h > @@ -672,4 +672,18 @@ bool datapath_get_nb_uuid(const struct > sbrec_datapath_binding *sb, > > const char *datapath_get_nb_type(const struct sbrec_datapath_binding *sb); > > +struct sset *lrp_network_sset(const char **networks, int n_networks); > + > +char *normalize_ipv4_prefix_str(const char *orig_prefix); > + > +char *normalize_ipv6_prefix_str(const char *orig_prefix); > + > +char *normalize_prefix_str(const char *orig_prefix); > + > +char *normalize_ipv4_addr_str(const char *orig_addr); > + > +char *normalize_ipv6_addr_str(const char *orig_addr); > + > +OVS_UNUSED char *normalize_addr_str(const char *orig_addr); > nit: No need for OVS_UNUSED. > + > #endif /* OVN_UTIL_H */ > diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c > index 058ad8968..fceb1a567 100644 > --- a/utilities/ovn-nbctl.c > +++ b/utilities/ovn-nbctl.c > @@ -4534,87 +4534,6 @@ nbctl_dhcp_options_list(struct ctl_context *ctx) > free(nodes); > } > > -static char * > -normalize_ipv4_prefix_str(const char *orig_prefix) > -{ > - unsigned int plen; > - ovs_be32 ipv4; > - char *error; > - > - error = ip_parse_cidr(orig_prefix, &ipv4, &plen); > - if (error) { > - free(error); > - return NULL; > - } > - return normalize_ipv4_prefix(ipv4, plen); > -} > - > -static char * > -normalize_ipv6_prefix_str(const char *orig_prefix) > -{ > - unsigned int plen; > - struct in6_addr ipv6; > - char *error; > - > - error = ipv6_parse_cidr(orig_prefix, &ipv6, &plen); > - if (error) { > - free(error); > - return NULL; > - } > - return normalize_ipv6_prefix(&ipv6, plen); > -} > - > -/* The caller must free the returned string. */ > -static char * > -normalize_prefix_str(const char *orig_prefix) > -{ > - char *ret; > - > - ret = normalize_ipv4_prefix_str(orig_prefix); > - if (!ret) { > - ret = normalize_ipv6_prefix_str(orig_prefix); > - } > - return ret; > -} > - > -static char * > -normalize_ipv4_addr_str(const char *orig_addr) > -{ > - ovs_be32 ipv4; > - > - if (!ip_parse(orig_addr, &ipv4)) { > - return NULL; > - } > - > - return normalize_ipv4_prefix(ipv4, 32); > -} > - > -static char * > -normalize_ipv6_addr_str(const char *orig_addr) > -{ > - struct in6_addr ipv6; > - > - if (!ipv6_parse(orig_addr, &ipv6)) { > - return NULL; > - } > - > - return normalize_ipv6_prefix(&ipv6, 128); > -} > - > -/* Similar to normalize_prefix_str but must be an un-masked address. > - * The caller must free the returned string. */ > -OVS_UNUSED static char * > -normalize_addr_str(const char *orig_addr) > -{ > - char *ret; > - > - ret = normalize_ipv4_addr_str(orig_addr); > - if (!ret) { > - ret = normalize_ipv6_addr_str(orig_addr); > - } > - return ret; > -} > - > static bool > ip_in_lrp_networks(const struct nbrec_logical_router_port *lrp, > const char *ip_s); > @@ -6552,23 +6471,6 @@ nbctl_lrp_get_gateway_chassis(struct ctl_context > *ctx) > free(gcs); > } > > -static struct sset * > -lrp_network_sset(const char **networks, int n_networks) > -{ > - struct sset *network_set = xzalloc(sizeof *network_set); > - sset_init(network_set); > - for (int i = 0; i < n_networks; i++) { > - char *norm = normalize_prefix_str(networks[i]); > - if (!norm) { > - sset_destroy(network_set); > - free(network_set); > - return NULL; > - } > - sset_add_and_free(network_set, norm); > - } > - return network_set; > -} > - > static void > nbctl_pre_lrp_add(struct ctl_context *ctx) > { > -- > 2.51.0 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > With that addressed: Acked-by: Ales Musil <[email protected]> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
