new file mode 100644
@@ -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_ */
@@ -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;
@@ -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];
Move common functions related to checksum, identifier and hook-type parsing to a common include file. Signed-off-by: Tom Herbert <tom@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