diff options
author | William Tu <u9012063@gmail.com> | 2018-01-25 16:20:10 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-01-25 21:39:43 -0500 |
commit | d350a823020e71e20a10d1dfa44f1d1d653b0334 (patch) | |
tree | 71ed16bf911148db581e907fa002a2566a6adcb6 | |
parent | c69de58ba84f480879de64571d9dae5102d10ed6 (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.h | 32 | ||||
-rw-r--r-- | include/uapi/linux/erspan.h | 52 |
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 */ | ||
72 | struct 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 | |||
94 | enum erspan_encap_type { | 73 | enum 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 |
103 | struct 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 | ||
111 | struct erspan_base_hdr { | 83 | struct 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 */ | ||
20 | struct 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 | |||
44 | struct 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 */ | ||