cpp-d1064d
[cross.git] / i686-linux-gnu-4.7 / usr / include / 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 _ERSPAN_H
14 #define _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 /* _ERSPAN_H */