aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Tu <u9012063@gmail.com>2018-01-25 16:20:10 -0500
committerDavid S. Miller <davem@davemloft.net>2018-01-25 21:39:43 -0500
commitd350a823020e71e20a10d1dfa44f1d1d653b0334 (patch)
tree71ed16bf911148db581e907fa002a2566a6adcb6
parentc69de58ba84f480879de64571d9dae5102d10ed6 (diff)
net: erspan: create erspan metadata uapi header
The patch adds a new uapi header file, erspan.h, and moves the 'struct erspan_metadata' from internal erspan.h to it. Signed-off-by: William Tu <u9012063@gmail.com> Acked-by: Pravin B Shelar <pshelar@ovn.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/erspan.h32
-rw-r--r--include/uapi/linux/erspan.h52
2 files changed, 54 insertions, 30 deletions
diff --git a/include/net/erspan.h b/include/net/erspan.h
index 6d30fe898286..5daa4866412b 100644
--- a/include/net/erspan.h
+++ b/include/net/erspan.h
@@ -46,6 +46,8 @@
46 * GRE proto ERSPAN type II = 0x88BE, type III = 0x22EB 46 * GRE proto ERSPAN type II = 0x88BE, type III = 0x22EB
47 */ 47 */
48 48
49#include <uapi/linux/erspan.h>
50
49#define ERSPAN_VERSION 0x1 /* ERSPAN type II */ 51#define ERSPAN_VERSION 0x1 /* ERSPAN type II */
50#define VER_MASK 0xf000 52#define VER_MASK 0xf000
51#define VLAN_MASK 0x0fff 53#define VLAN_MASK 0x0fff
@@ -68,29 +70,6 @@
68#define HWID_OFFSET 4 70#define HWID_OFFSET 4
69#define DIR_OFFSET 3 71#define DIR_OFFSET 3
70 72
71/* ERSPAN version 2 metadata header */
72struct erspan_md2 {
73 __be32 timestamp;
74 __be16 sgt; /* security group tag */
75#if defined(__LITTLE_ENDIAN_BITFIELD)
76 __u8 hwid_upper:2,
77 ft:5,
78 p:1;
79 __u8 o:1,
80 gra:2,
81 dir:1,
82 hwid:4;
83#elif defined(__BIG_ENDIAN_BITFIELD)
84 __u8 p:1,
85 ft:5,
86 hwid_upper:2;
87 __u8 hwid:4,
88 dir:1,
89 gra:2,
90 o:1;
91#endif
92};
93
94enum erspan_encap_type { 73enum erspan_encap_type {
95 ERSPAN_ENCAP_NOVLAN = 0x0, /* originally without VLAN tag */ 74 ERSPAN_ENCAP_NOVLAN = 0x0, /* originally without VLAN tag */
96 ERSPAN_ENCAP_ISL = 0x1, /* originally ISL encapsulated */ 75 ERSPAN_ENCAP_ISL = 0x1, /* originally ISL encapsulated */
@@ -100,13 +79,6 @@ enum erspan_encap_type {
100 79
101#define ERSPAN_V1_MDSIZE 4 80#define ERSPAN_V1_MDSIZE 4
102#define ERSPAN_V2_MDSIZE 8 81#define ERSPAN_V2_MDSIZE 8
103struct erspan_metadata {
104 union {
105 __be32 index; /* Version 1 (type II)*/
106 struct erspan_md2 md2; /* Version 2 (type III) */
107 } u;
108 int version;
109};
110 82
111struct erspan_base_hdr { 83struct erspan_base_hdr {
112#if defined(__LITTLE_ENDIAN_BITFIELD) 84#if defined(__LITTLE_ENDIAN_BITFIELD)
diff --git a/include/uapi/linux/erspan.h b/include/uapi/linux/erspan.h
new file mode 100644
index 000000000000..841573019ae1
--- /dev/null
+++ b/include/uapi/linux/erspan.h
@@ -0,0 +1,52 @@
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 * ERSPAN Tunnel Metadata
4 *
5 * Copyright (c) 2018 VMware
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2
9 * as published by the Free Software Foundation.
10 *
11 * Userspace API for metadata mode ERSPAN tunnel
12 */
13#ifndef _UAPI_ERSPAN_H
14#define _UAPI_ERSPAN_H
15
16#include <linux/types.h> /* For __beXX in userspace */
17#include <asm/byteorder.h>
18
19/* ERSPAN version 2 metadata header */
20struct erspan_md2 {
21 __be32 timestamp;
22 __be16 sgt; /* security group tag */
23#if defined(__LITTLE_ENDIAN_BITFIELD)
24 __u8 hwid_upper:2,
25 ft:5,
26 p:1;
27 __u8 o:1,
28 gra:2,
29 dir:1,
30 hwid:4;
31#elif defined(__BIG_ENDIAN_BITFIELD)
32 __u8 p:1,
33 ft:5,
34 hwid_upper:2;
35 __u8 hwid:4,
36 dir:1,
37 gra:2,
38 o:1;
39#else
40#error "Please fix <asm/byteorder.h>"
41#endif
42};
43
44struct erspan_metadata {
45 int version;
46 union {
47 __be32 index; /* Version 1 (type II)*/
48 struct erspan_md2 md2; /* Version 2 (type III) */
49 } u;
50};
51
52#endif /* _UAPI_ERSPAN_H */