app/test-fib: get rid of libresolv dependency
authorVladimir Medvedkin <vladimir.medvedkin@intel.com>
Mon, 9 Mar 2020 12:42:22 +0000 (12:42 +0000)
committerDavid Marchand <david.marchand@redhat.com>
Fri, 10 Apr 2020 09:38:02 +0000 (11:38 +0200)
Get rid of using inet_net_pton(). Implement it internally in the app.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
app/test-fib/Makefile
app/test-fib/main.c

index 78b45fe..9da34eb 100644 (file)
@@ -11,8 +11,6 @@ CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
-LDFLAGS += -lresolv
-
 # all source are stored in SRCS-y
 SRCS-y := main.c
 
index 7fd3420..6e80d65 100644 (file)
@@ -2,14 +2,10 @@
  * Copyright(c) 2019 Intel Corporation
  */
 
-#include <rte_string_fns.h>
 #include <getopt.h>
 #include <string.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
 #include <arpa/inet.h>
+#include <sys/socket.h>
 
 #include <rte_cycles.h>
 #include <rte_errno.h>
@@ -443,6 +439,32 @@ gen_rnd_lookup_tbl(int af)
        }
 }
 
+static int
+_inet_net_pton(int af, char *prefix, void *addr)
+{
+       const char *dlm = "/";
+       char *s, *sp;
+       int ret, depth;
+       unsigned int max_depth;
+
+       if ((prefix == NULL) || (addr == NULL))
+               return -EINVAL;
+
+       s = strtok_r(prefix, dlm, &sp);
+       if (s == NULL)
+               return -EINVAL;
+
+       ret = inet_pton(af, s, addr);
+       if (ret != 1)
+               return -errno;
+
+       s = strtok_r(NULL, dlm, &sp);
+       max_depth = (af == AF_INET) ? 32 : 128;
+       GET_CB_FIELD(s, depth, 0, max_depth, 0);
+
+       return depth;
+}
+
 static int
 parse_rt_4(FILE *f)
 {
@@ -463,8 +485,7 @@ parse_rt_4(FILE *f)
                        s = NULL;
                }
 
-               ret = inet_net_pton(AF_INET, in[RT_PREFIX], &rt[j].addr,
-                       sizeof(rt[j].addr));
+               ret = _inet_net_pton(AF_INET, in[RT_PREFIX], &rt[j].addr);
                if (ret == -1)
                        return -errno;
 
@@ -478,30 +499,6 @@ parse_rt_4(FILE *f)
        return 0;
 }
 
-static int
-__inet_net_pton6(char *prefix, uint8_t *addr)
-{
-       const char *dlm = "/";
-       char *s, *sp;
-       int ret, depth;
-
-       if ((prefix == NULL) || (addr == NULL))
-               return -EINVAL;
-
-       s = strtok_r(prefix, dlm, &sp);
-       if (s == NULL)
-               return -EINVAL;
-
-       ret = inet_pton(AF_INET6, s, addr);
-       if (ret != 1)
-               return -errno;
-
-       s = strtok_r(NULL, dlm, &sp);
-       GET_CB_FIELD(s, depth, 0, 128, 0);
-
-       return depth;
-}
-
 static int
 parse_rt_6(FILE *f)
 {
@@ -522,7 +519,7 @@ parse_rt_6(FILE *f)
                        s = NULL;
                }
 
-               ret = __inet_net_pton6(in[RT_PREFIX], rt[j].addr);
+               ret = _inet_net_pton(AF_INET6, in[RT_PREFIX], rt[j].addr);
                if (ret < 0)
                        return ret;