diff mbox

[ovs-dev,4/6] ovs-router: Use standard libraries in scan_ipv6_route().

Message ID 1447208184-66714-4-git-send-email-jpettit@ovn.org
State Accepted
Headers show

Commit Message

Justin Pettit Nov. 11, 2015, 2:16 a.m. UTC
Signed-off-by: Justin Pettit <jpettit@nicira.com>
---
 lib/ovs-router.c |   28 ++++++++++++++--------------
 1 files changed, 14 insertions(+), 14 deletions(-)

Comments

Ben Pfaff Nov. 23, 2015, 6:02 p.m. UTC | #1
On Tue, Nov 10, 2015 at 06:16:22PM -0800, Justin Pettit wrote:
> Signed-off-by: Justin Pettit <jpettit@nicira.com>

Acked-by: Ben Pfaff <blp@ovn.org>
diff mbox

Patch

diff --git a/lib/ovs-router.c b/lib/ovs-router.c
index 3962aef..1db253b 100644
--- a/lib/ovs-router.c
+++ b/lib/ovs-router.c
@@ -200,22 +200,22 @@  rt_entry_delete(uint8_t priority, const struct in6_addr *ip6_dst, uint8_t plen)
 static bool
 scan_ipv6_route(const char *s, struct in6_addr *addr, unsigned int *plen)
 {
-    int len, n;
-    int slen = strlen(s);
-    char ipv6_s[IPV6_SCAN_LEN + 1];
+    struct in6_addr mask;
+    char *error;
 
-    if (ovs_scan(s, IPV6_SCAN_FMT"%n", ipv6_s, &len)
-        && inet_pton(AF_INET6, ipv6_s, addr) == 1) {
-        if (len == slen) {
-            *plen = 128;
-            return true;
-        }
-        if (ovs_scan(s + len, "/%u%n", plen, &n)
-            && len + n == slen && *plen <= 128) {
-            return true;
-        }
+    error = ipv6_parse_masked(s, addr, &mask);
+    if (error) {
+        free(error);
+        return false;
     }
-    return false;
+
+    if (!ipv6_is_cidr(&mask)) {
+        return false;
+    }
+
+    *plen = ipv6_count_cidr_bits(&mask);
+
+    return true;
 }
 
 static bool