xref: /linux/include/uapi/linux/erspan.h (revision 552c69b36ebd966186573b9c7a286b390935cce1)
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 */
53