Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
0002 /*
0003  * Copyright (c) 2016, Amir Vadai <amir@vadai.me>
0004  * Copyright (c) 2016, Mellanox Technologies. All rights reserved.
0005  *
0006  * This program is free software; you can redistribute it and/or modify
0007  * it under the terms of the GNU General Public License as published by
0008  * the Free Software Foundation; either version 2 of the License, or
0009  * (at your option) any later version.
0010  */
0011 
0012 #ifndef __LINUX_TC_TUNNEL_KEY_H
0013 #define __LINUX_TC_TUNNEL_KEY_H
0014 
0015 #include <linux/pkt_cls.h>
0016 
0017 #define TCA_TUNNEL_KEY_ACT_SET      1
0018 #define TCA_TUNNEL_KEY_ACT_RELEASE  2
0019 
0020 struct tc_tunnel_key {
0021     tc_gen;
0022     int t_action;
0023 };
0024 
0025 enum {
0026     TCA_TUNNEL_KEY_UNSPEC,
0027     TCA_TUNNEL_KEY_TM,
0028     TCA_TUNNEL_KEY_PARMS,
0029     TCA_TUNNEL_KEY_ENC_IPV4_SRC,    /* be32 */
0030     TCA_TUNNEL_KEY_ENC_IPV4_DST,    /* be32 */
0031     TCA_TUNNEL_KEY_ENC_IPV6_SRC,    /* struct in6_addr */
0032     TCA_TUNNEL_KEY_ENC_IPV6_DST,    /* struct in6_addr */
0033     TCA_TUNNEL_KEY_ENC_KEY_ID,  /* be64 */
0034     TCA_TUNNEL_KEY_PAD,
0035     TCA_TUNNEL_KEY_ENC_DST_PORT,    /* be16 */
0036     TCA_TUNNEL_KEY_NO_CSUM,     /* u8 */
0037     TCA_TUNNEL_KEY_ENC_OPTS,    /* Nested TCA_TUNNEL_KEY_ENC_OPTS_
0038                      * attributes
0039                      */
0040     TCA_TUNNEL_KEY_ENC_TOS,     /* u8 */
0041     TCA_TUNNEL_KEY_ENC_TTL,     /* u8 */
0042     __TCA_TUNNEL_KEY_MAX,
0043 };
0044 
0045 #define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1)
0046 
0047 enum {
0048     TCA_TUNNEL_KEY_ENC_OPTS_UNSPEC,
0049     TCA_TUNNEL_KEY_ENC_OPTS_GENEVE,     /* Nested
0050                          * TCA_TUNNEL_KEY_ENC_OPTS_
0051                          * attributes
0052                          */
0053     TCA_TUNNEL_KEY_ENC_OPTS_VXLAN,      /* Nested
0054                          * TCA_TUNNEL_KEY_ENC_OPTS_
0055                          * attributes
0056                          */
0057     TCA_TUNNEL_KEY_ENC_OPTS_ERSPAN,     /* Nested
0058                          * TCA_TUNNEL_KEY_ENC_OPTS_
0059                          * attributes
0060                          */
0061     __TCA_TUNNEL_KEY_ENC_OPTS_MAX,
0062 };
0063 
0064 #define TCA_TUNNEL_KEY_ENC_OPTS_MAX (__TCA_TUNNEL_KEY_ENC_OPTS_MAX - 1)
0065 
0066 enum {
0067     TCA_TUNNEL_KEY_ENC_OPT_GENEVE_UNSPEC,
0068     TCA_TUNNEL_KEY_ENC_OPT_GENEVE_CLASS,        /* be16 */
0069     TCA_TUNNEL_KEY_ENC_OPT_GENEVE_TYPE,     /* u8 */
0070     TCA_TUNNEL_KEY_ENC_OPT_GENEVE_DATA,     /* 4 to 128 bytes */
0071 
0072     __TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX,
0073 };
0074 
0075 #define TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX \
0076     (__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX - 1)
0077 
0078 enum {
0079     TCA_TUNNEL_KEY_ENC_OPT_VXLAN_UNSPEC,
0080     TCA_TUNNEL_KEY_ENC_OPT_VXLAN_GBP,       /* u32 */
0081     __TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX,
0082 };
0083 
0084 #define TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX \
0085     (__TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX - 1)
0086 
0087 enum {
0088     TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_UNSPEC,
0089     TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_VER,      /* u8 */
0090     TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_INDEX,        /* be32 */
0091     TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_DIR,      /* u8 */
0092     TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_HWID,     /* u8 */
0093     __TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX,
0094 };
0095 
0096 #define TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX \
0097     (__TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX - 1)
0098 
0099 #endif