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  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  */
11 
12 #ifndef __LINUX_TC_TUNNEL_KEY_H
13 #define __LINUX_TC_TUNNEL_KEY_H
14 
15 #include <linux/pkt_cls.h>
16 
17 #define TCA_TUNNEL_KEY_ACT_SET	    1
18 #define TCA_TUNNEL_KEY_ACT_RELEASE  2
19 
20 struct tc_tunnel_key {
21 	tc_gen;
22 	int t_action;
23 };
24 
25 enum {
26 	TCA_TUNNEL_KEY_UNSPEC,
27 	TCA_TUNNEL_KEY_TM,
28 	TCA_TUNNEL_KEY_PARMS,
29 	TCA_TUNNEL_KEY_ENC_IPV4_SRC,	/* be32 */
30 	TCA_TUNNEL_KEY_ENC_IPV4_DST,	/* be32 */
31 	TCA_TUNNEL_KEY_ENC_IPV6_SRC,	/* struct in6_addr */
32 	TCA_TUNNEL_KEY_ENC_IPV6_DST,	/* struct in6_addr */
33 	TCA_TUNNEL_KEY_ENC_KEY_ID,	/* be64 */
34 	TCA_TUNNEL_KEY_PAD,
35 	TCA_TUNNEL_KEY_ENC_DST_PORT,	/* be16 */
36 	TCA_TUNNEL_KEY_NO_CSUM,		/* u8 */
37 	TCA_TUNNEL_KEY_ENC_OPTS,	/* Nested TCA_TUNNEL_KEY_ENC_OPTS_
38 					 * attributes
39 					 */
40 	TCA_TUNNEL_KEY_ENC_TOS,		/* u8 */
41 	TCA_TUNNEL_KEY_ENC_TTL,		/* u8 */
42 	__TCA_TUNNEL_KEY_MAX,
43 };
44 
45 #define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1)
46 
47 enum {
48 	TCA_TUNNEL_KEY_ENC_OPTS_UNSPEC,
49 	TCA_TUNNEL_KEY_ENC_OPTS_GENEVE,		/* Nested
50 						 * TCA_TUNNEL_KEY_ENC_OPTS_
51 						 * attributes
52 						 */
53 	__TCA_TUNNEL_KEY_ENC_OPTS_MAX,
54 };
55 
56 #define TCA_TUNNEL_KEY_ENC_OPTS_MAX (__TCA_TUNNEL_KEY_ENC_OPTS_MAX - 1)
57 
58 enum {
59 	TCA_TUNNEL_KEY_ENC_OPT_GENEVE_UNSPEC,
60 	TCA_TUNNEL_KEY_ENC_OPT_GENEVE_CLASS,		/* be16 */
61 	TCA_TUNNEL_KEY_ENC_OPT_GENEVE_TYPE,		/* u8 */
62 	TCA_TUNNEL_KEY_ENC_OPT_GENEVE_DATA,		/* 4 to 128 bytes */
63 
64 	__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX,
65 };
66 
67 #define TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX \
68 	(__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX - 1)
69 
70 #endif
71