Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

William Tu and committed by
David S. Miller
d350a823 c69de58b

+54 -30
+2 -30
include/net/erspan.h
··· 46 46 * GRE proto ERSPAN type II = 0x88BE, type III = 0x22EB 47 47 */ 48 48 49 + #include <uapi/linux/erspan.h> 50 + 49 51 #define ERSPAN_VERSION 0x1 /* ERSPAN type II */ 50 52 #define VER_MASK 0xf000 51 53 #define VLAN_MASK 0x0fff ··· 70 68 #define HWID_OFFSET 4 71 69 #define DIR_OFFSET 3 72 70 73 - /* ERSPAN version 2 metadata header */ 74 - struct erspan_md2 { 75 - __be32 timestamp; 76 - __be16 sgt; /* security group tag */ 77 - #if defined(__LITTLE_ENDIAN_BITFIELD) 78 - __u8 hwid_upper:2, 79 - ft:5, 80 - p:1; 81 - __u8 o:1, 82 - gra:2, 83 - dir:1, 84 - hwid:4; 85 - #elif defined(__BIG_ENDIAN_BITFIELD) 86 - __u8 p:1, 87 - ft:5, 88 - hwid_upper:2; 89 - __u8 hwid:4, 90 - dir:1, 91 - gra:2, 92 - o:1; 93 - #endif 94 - }; 95 - 96 71 enum erspan_encap_type { 97 72 ERSPAN_ENCAP_NOVLAN = 0x0, /* originally without VLAN tag */ 98 73 ERSPAN_ENCAP_ISL = 0x1, /* originally ISL encapsulated */ ··· 79 100 80 101 #define ERSPAN_V1_MDSIZE 4 81 102 #define ERSPAN_V2_MDSIZE 8 82 - struct erspan_metadata { 83 - union { 84 - __be32 index; /* Version 1 (type II)*/ 85 - struct erspan_md2 md2; /* Version 2 (type III) */ 86 - } u; 87 - int version; 88 - }; 89 103 90 104 struct erspan_base_hdr { 91 105 #if defined(__LITTLE_ENDIAN_BITFIELD)
+52
include/uapi/linux/erspan.h
··· 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 */