Merge tag 'mm-nonmm-stable-2024-05-19-11-56' of git://git.kernel.org/pub/scm/linux...
[sfrench/cifs-2.6.git] / include / uapi / linux / tc_act / tc_tunnel_key.h
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
15 struct tc_tunnel_key {
16         tc_gen;
17         int t_action;
18 };
19
20 enum {
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
43 enum {
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
62 enum {
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
74 enum {
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
83 enum {
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