Move common functions related to checksum, identifier and hook-type
parsing to a common include file.

Signed-off-by: Tom Herbert <t...@quantonium.net>
---
 ip/ila_common.h       | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++
 ip/ipila.c            |  77 +-----------------------------------
 ip/iproute_lwtunnel.c |  97 +---------------------------------------------
 3 files changed, 107 insertions(+), 172 deletions(-)
 create mode 100644 ip/ila_common.h

diff --git a/ip/ila_common.h b/ip/ila_common.h
new file mode 100644
index 00000000..04c6c2ed
--- /dev/null
+++ b/ip/ila_common.h
@@ -0,0 +1,105 @@
+#ifndef _ILA_COMMON_H_
+#define _ILA_COMMON_H_
+
+#include <linux/ila.h>
+#include <string.h>
+
+static inline char *ila_csum_mode2name(__u8 csum_mode)
+{
+       switch (csum_mode) {
+       case ILA_CSUM_ADJUST_TRANSPORT:
+               return "adj-transport";
+       case ILA_CSUM_NEUTRAL_MAP:
+               return "neutral-map";
+       case ILA_CSUM_NO_ACTION:
+               return "no-action";
+       case ILA_CSUM_NEUTRAL_MAP_AUTO:
+               return "neutral-map-auto";
+       default:
+               return "unknown";
+       }
+}
+
+static inline int ila_csum_name2mode(char *name)
+{
+       if (strcmp(name, "adj-transport") == 0)
+               return ILA_CSUM_ADJUST_TRANSPORT;
+       else if (strcmp(name, "neutral-map") == 0)
+               return ILA_CSUM_NEUTRAL_MAP;
+       else if (strcmp(name, "neutral-map-auto") == 0)
+               return ILA_CSUM_NEUTRAL_MAP_AUTO;
+       else if (strcmp(name, "no-action") == 0)
+               return ILA_CSUM_NO_ACTION;
+       else if (strcmp(name, "neutral-map-auto") == 0)
+               return ILA_CSUM_NEUTRAL_MAP_AUTO;
+       else
+               return -1;
+}
+
+static inline char *ila_ident_type2name(__u8 ident_type)
+{
+       switch (ident_type) {
+       case ILA_ATYPE_IID:
+               return "iid";
+       case ILA_ATYPE_LUID:
+               return "luid";
+       case ILA_ATYPE_VIRT_V4:
+               return "virt-v4";
+       case ILA_ATYPE_VIRT_UNI_V6:
+               return "virt-uni-v6";
+       case ILA_ATYPE_VIRT_MULTI_V6:
+               return "virt-multi-v6";
+       case ILA_ATYPE_NONLOCAL_ADDR:
+               return "nonlocal-addr";
+       case ILA_ATYPE_USE_FORMAT:
+               return "use-format";
+       default:
+               return "unknown";
+       }
+}
+
+static inline int ila_ident_name2type(char *name)
+{
+       if (!strcmp(name, "luid"))
+               return ILA_ATYPE_LUID;
+       else if (!strcmp(name, "use-format"))
+               return ILA_ATYPE_USE_FORMAT;
+#if 0 /* No kernel support for configuring these yet */
+       else if (!strcmp(name, "iid"))
+               return ILA_ATYPE_IID;
+       else if (!strcmp(name, "virt-v4"))
+               return ILA_ATYPE_VIRT_V4;
+       else if (!strcmp(name, "virt-uni-v6"))
+               return ILA_ATYPE_VIRT_UNI_V6;
+       else if (!strcmp(name, "virt-multi-v6"))
+               return ILA_ATYPE_VIRT_MULTI_V6;
+       else if (!strcmp(name, "nonlocal-addr"))
+               return ILA_ATYPE_NONLOCAL_ADDR;
+#endif
+       else
+               return -1;
+}
+
+static inline char *ila_hook_type2name(__u8 hook_type)
+{
+       switch (hook_type) {
+       case ILA_HOOK_ROUTE_OUTPUT:
+               return "output";
+       case ILA_HOOK_ROUTE_INPUT:
+               return "input";
+       default:
+               return "unknown";
+       }
+}
+
+static inline int ila_hook_name2type(char *name)
+{
+       if (!strcmp(name, "output"))
+               return ILA_HOOK_ROUTE_OUTPUT;
+       else if (!strcmp(name, "input"))
+               return ILA_HOOK_ROUTE_INPUT;
+       else
+               return -1;
+}
+
+#endif /* _ILA_COMMON_H_ */
diff --git a/ip/ipila.c b/ip/ipila.c
index c7a8ede8..fcc20bf7 100644
--- a/ip/ipila.c
+++ b/ip/ipila.c
@@ -22,6 +22,7 @@
 #include "libgenl.h"
 #include "utils.h"
 #include "ip_common.h"
+#include "ila_common.h"
 
 static void usage(void)
 {
@@ -51,82 +52,6 @@ static int genl_family = -1;
 
 #define ADDR_BUF_SIZE sizeof("xxxx:xxxx:xxxx:xxxx")
 
-static char *ila_csum_mode2name(__u8 csum_mode)
-{
-       switch (csum_mode) {
-       case ILA_CSUM_ADJUST_TRANSPORT:
-               return "adj-transport";
-       case ILA_CSUM_NEUTRAL_MAP:
-               return "neutral-map";
-       case ILA_CSUM_NO_ACTION:
-               return "no-action";
-       case ILA_CSUM_NEUTRAL_MAP_AUTO:
-               return "neutral-map-auto";
-       default:
-               return "unknown";
-       }
-}
-
-static int ila_csum_name2mode(char *name)
-{
-       if (strcmp(name, "adj-transport") == 0)
-               return ILA_CSUM_ADJUST_TRANSPORT;
-       else if (strcmp(name, "neutral-map") == 0)
-               return ILA_CSUM_NEUTRAL_MAP;
-       else if (strcmp(name, "neutral-map-auto") == 0)
-               return ILA_CSUM_NEUTRAL_MAP_AUTO;
-       else if (strcmp(name, "no-action") == 0)
-               return ILA_CSUM_NO_ACTION;
-       else if (strcmp(name, "neutral-map-auto") == 0)
-               return ILA_CSUM_NEUTRAL_MAP_AUTO;
-       else
-               return -1;
-}
-
-static char *ila_ident_type2name(__u8 ident_type)
-{
-       switch (ident_type) {
-       case ILA_ATYPE_IID:
-               return "iid";
-       case ILA_ATYPE_LUID:
-               return "luid";
-       case ILA_ATYPE_VIRT_V4:
-               return "virt-v4";
-       case ILA_ATYPE_VIRT_UNI_V6:
-               return "virt-uni-v6";
-       case ILA_ATYPE_VIRT_MULTI_V6:
-               return "virt-multi-v6";
-       case ILA_ATYPE_NONLOCAL_ADDR:
-               return "nonlocal-addr";
-       case ILA_ATYPE_USE_FORMAT:
-               return "use-format";
-       default:
-               return "unknown";
-       }
-}
-
-static int ila_ident_name2type(char *name)
-{
-       if (!strcmp(name, "luid"))
-               return ILA_ATYPE_LUID;
-       else if (!strcmp(name, "use-format"))
-               return ILA_ATYPE_USE_FORMAT;
-#if 0 /* No kernel support for configuring these yet */
-       else if (!strcmp(name, "iid"))
-               return ILA_ATYPE_IID;
-       else if (!strcmp(name, "virt-v4"))
-               return ILA_ATYPE_VIRT_V4;
-       else if (!strcmp(name, "virt-uni-v6"))
-               return ILA_ATYPE_VIRT_UNI_V6;
-       else if (!strcmp(name, "virt-multi-v6"))
-               return ILA_ATYPE_VIRT_MULTI_V6;
-       else if (!strcmp(name, "nonlocal-addr"))
-               return ILA_ATYPE_NONLOCAL_ADDR;
-#endif
-       else
-               return -1;
-}
-
 static int print_addr64(__u64 addr, char *buff, size_t len)
 {
        __u16 *words = (__u16 *)&addr;
diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c
index e57cc9f3..27266171 100644
--- a/ip/iproute_lwtunnel.c
+++ b/ip/iproute_lwtunnel.c
@@ -25,6 +25,7 @@
 #include "utils.h"
 #include "iproute_lwtunnel.h"
 #include "bpf_util.h"
+#include "ila_common.h"
 
 #include <linux/seg6.h>
 #include <linux/seg6_iptunnel.h>
@@ -279,102 +280,6 @@ static void print_encap_ip(FILE *fp, struct rtattr *encap)
                fprintf(fp, "tos %d ", rta_getattr_u8(tb[LWTUNNEL_IP_TOS]));
 }
 
-static char *ila_csum_mode2name(__u8 csum_mode)
-{
-       switch (csum_mode) {
-       case ILA_CSUM_ADJUST_TRANSPORT:
-               return "adj-transport";
-       case ILA_CSUM_NEUTRAL_MAP:
-               return "neutral-map";
-       case ILA_CSUM_NO_ACTION:
-               return "no-action";
-       case ILA_CSUM_NEUTRAL_MAP_AUTO:
-               return "neutral-map-auto";
-       default:
-               return "unknown";
-       }
-}
-
-static int ila_csum_name2mode(char *name)
-{
-       if (strcmp(name, "adj-transport") == 0)
-               return ILA_CSUM_ADJUST_TRANSPORT;
-       else if (strcmp(name, "neutral-map") == 0)
-               return ILA_CSUM_NEUTRAL_MAP;
-       else if (strcmp(name, "no-action") == 0)
-               return ILA_CSUM_NO_ACTION;
-       else if (strcmp(name, "neutral-map-auto") == 0)
-               return ILA_CSUM_NEUTRAL_MAP_AUTO;
-       else
-               return -1;
-}
-
-static char *ila_ident_type2name(__u8 ident_type)
-{
-       switch (ident_type) {
-       case ILA_ATYPE_IID:
-               return "iid";
-       case ILA_ATYPE_LUID:
-               return "luid";
-       case ILA_ATYPE_VIRT_V4:
-               return "virt-v4";
-       case ILA_ATYPE_VIRT_UNI_V6:
-               return "virt-uni-v6";
-       case ILA_ATYPE_VIRT_MULTI_V6:
-               return "virt-multi-v6";
-       case ILA_ATYPE_NONLOCAL_ADDR:
-               return "nonlocal-addr";
-       case ILA_ATYPE_USE_FORMAT:
-               return "use-format";
-       default:
-               return "unknown";
-       }
-}
-
-static int ila_ident_name2type(char *name)
-{
-       if (!strcmp(name, "luid"))
-               return ILA_ATYPE_LUID;
-       else if (!strcmp(name, "use-format"))
-               return ILA_ATYPE_USE_FORMAT;
-#if 0 /* No kernel support for configuring these yet */
-       else if (!strcmp(name, "iid"))
-               return ILA_ATYPE_IID;
-       else if (!strcmp(name, "virt-v4"))
-               return ILA_ATYPE_VIRT_V4;
-       else if (!strcmp(name, "virt-uni-v6"))
-               return ILA_ATYPE_VIRT_UNI_V6;
-       else if (!strcmp(name, "virt-multi-v6"))
-               return ILA_ATYPE_VIRT_MULTI_V6;
-       else if (!strcmp(name, "nonlocal-addr"))
-               return ILA_ATYPE_NONLOCAL_ADDR;
-#endif
-       else
-               return -1;
-}
-
-static char *ila_hook_type2name(__u8 hook_type)
-{
-       switch (hook_type) {
-       case ILA_HOOK_ROUTE_OUTPUT:
-               return "output";
-       case ILA_HOOK_ROUTE_INPUT:
-               return "input";
-       default:
-               return "unknown";
-       }
-}
-
-static int ila_hook_name2type(char *name)
-{
-       if (!strcmp(name, "output"))
-               return ILA_HOOK_ROUTE_OUTPUT;
-       else if (!strcmp(name, "input"))
-               return ILA_HOOK_ROUTE_INPUT;
-       else
-               return -1;
-}
-
 static void print_encap_ila(FILE *fp, struct rtattr *encap)
 {
        struct rtattr *tb[ILA_ATTR_MAX+1];
-- 
2.11.0

Reply via email to