master
 1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
 2/*
 3 * Copyright (c) 2016, Amir Vadai <amir@vadai.me>
 4 * Copyright (c) 2016, Mellanox Technologies. All rights reserved.
 5 */
 6
 7#ifndef __LINUX_TC_TUNNEL_KEY_H
 8#define __LINUX_TC_TUNNEL_KEY_H
 9
10#include <linux/pkt_cls.h>
11
12#define TCA_TUNNEL_KEY_ACT_SET	    1
13#define TCA_TUNNEL_KEY_ACT_RELEASE  2
14
15struct tc_tunnel_key {
16	tc_gen;
17	int t_action;
18};
19
20enum {
21	TCA_TUNNEL_KEY_UNSPEC,
22	TCA_TUNNEL_KEY_TM,
23	TCA_TUNNEL_KEY_PARMS,
24	TCA_TUNNEL_KEY_ENC_IPV4_SRC,	/* be32 */
25	TCA_TUNNEL_KEY_ENC_IPV4_DST,	/* be32 */
26	TCA_TUNNEL_KEY_ENC_IPV6_SRC,	/* struct in6_addr */
27	TCA_TUNNEL_KEY_ENC_IPV6_DST,	/* struct in6_addr */
28	TCA_TUNNEL_KEY_ENC_KEY_ID,	/* be64 */
29	TCA_TUNNEL_KEY_PAD,
30	TCA_TUNNEL_KEY_ENC_DST_PORT,	/* be16 */
31	TCA_TUNNEL_KEY_NO_CSUM,		/* u8 */
32	TCA_TUNNEL_KEY_ENC_OPTS,	/* Nested TCA_TUNNEL_KEY_ENC_OPTS_
33					 * attributes
34					 */
35	TCA_TUNNEL_KEY_ENC_TOS,		/* u8 */
36	TCA_TUNNEL_KEY_ENC_TTL,		/* u8 */
37	TCA_TUNNEL_KEY_NO_FRAG,		/* flag */
38	__TCA_TUNNEL_KEY_MAX,
39};
40
41#define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1)
42
43enum {
44	TCA_TUNNEL_KEY_ENC_OPTS_UNSPEC,
45	TCA_TUNNEL_KEY_ENC_OPTS_GENEVE,		/* Nested
46						 * TCA_TUNNEL_KEY_ENC_OPTS_
47						 * attributes
48						 */
49	TCA_TUNNEL_KEY_ENC_OPTS_VXLAN,		/* Nested
50						 * TCA_TUNNEL_KEY_ENC_OPTS_
51						 * attributes
52						 */
53	TCA_TUNNEL_KEY_ENC_OPTS_ERSPAN,		/* Nested
54						 * TCA_TUNNEL_KEY_ENC_OPTS_
55						 * attributes
56						 */
57	__TCA_TUNNEL_KEY_ENC_OPTS_MAX,
58};
59
60#define TCA_TUNNEL_KEY_ENC_OPTS_MAX (__TCA_TUNNEL_KEY_ENC_OPTS_MAX - 1)
61
62enum {
63	TCA_TUNNEL_KEY_ENC_OPT_GENEVE_UNSPEC,
64	TCA_TUNNEL_KEY_ENC_OPT_GENEVE_CLASS,		/* be16 */
65	TCA_TUNNEL_KEY_ENC_OPT_GENEVE_TYPE,		/* u8 */
66	TCA_TUNNEL_KEY_ENC_OPT_GENEVE_DATA,		/* 4 to 128 bytes */
67
68	__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX,
69};
70
71#define TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX \
72	(__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX - 1)
73
74enum {
75	TCA_TUNNEL_KEY_ENC_OPT_VXLAN_UNSPEC,
76	TCA_TUNNEL_KEY_ENC_OPT_VXLAN_GBP,		/* u32 */
77	__TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX,
78};
79
80#define TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX \
81	(__TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX - 1)
82
83enum {
84	TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_UNSPEC,
85	TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_VER,		/* u8 */
86	TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_INDEX,		/* be32 */
87	TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_DIR,		/* u8 */
88	TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_HWID,		/* u8 */
89	__TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX,
90};
91
92#define TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX \
93	(__TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX - 1)
94
95#endif