Signed-off-by: Justin Pettit <jpet...@nicira.com> --- lib/meta-flow.c | 39 +++------------------------------------ 1 files changed, 3 insertions(+), 36 deletions(-)
diff --git a/lib/meta-flow.c b/lib/meta-flow.c index 1a10a9b..6ae64c4 100644 --- a/lib/meta-flow.c +++ b/lib/meta-flow.c @@ -2048,43 +2048,10 @@ mf_from_ipv4_string(const struct mf_field *mf, const char *s, static char * mf_from_ipv6_string(const struct mf_field *mf, const char *s, - struct in6_addr *value, struct in6_addr *mask) + struct in6_addr *ipv6, struct in6_addr *mask) { - char *str = xstrdup(s); - char *save_ptr = NULL; - const char *name, *netmask; - int retval; - - ovs_assert(mf->n_bytes == sizeof *value); - - name = strtok_r(str, "/", &save_ptr); - retval = name ? lookup_ipv6(name, value) : EINVAL; - if (retval) { - char *err; - - err = xasprintf("%s: could not convert to IPv6 address", str); - free(str); - - return err; - } - - netmask = strtok_r(NULL, "/", &save_ptr); - if (netmask) { - if (inet_pton(AF_INET6, netmask, mask) != 1) { - int prefix = atoi(netmask); - if (prefix <= 0 || prefix > 128) { - free(str); - return xasprintf("%s: prefix bits not between 1 and 128", s); - } else { - *mask = ipv6_create_mask(prefix); - } - } - } else { - *mask = in6addr_exact; - } - free(str); - - return NULL; + ovs_assert(mf->n_bytes == sizeof *ipv6); + return ipv6_parse_masked(s, ipv6, mask); } static char * -- 1.7.5.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev