1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker /* 3*f80ad8b4SAndroid Build Coastguard Worker * ERSPAN Tunnel Metadata 4*f80ad8b4SAndroid Build Coastguard Worker * 5*f80ad8b4SAndroid Build Coastguard Worker * Copyright (c) 2018 VMware 6*f80ad8b4SAndroid Build Coastguard Worker * 7*f80ad8b4SAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or modify 8*f80ad8b4SAndroid Build Coastguard Worker * it under the terms of the GNU General Public License version 2 9*f80ad8b4SAndroid Build Coastguard Worker * as published by the Free Software Foundation. 10*f80ad8b4SAndroid Build Coastguard Worker * 11*f80ad8b4SAndroid Build Coastguard Worker * Userspace API for metadata mode ERSPAN tunnel 12*f80ad8b4SAndroid Build Coastguard Worker */ 13*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_ERSPAN_H 14*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_ERSPAN_H 15*f80ad8b4SAndroid Build Coastguard Worker 16*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h> /* For __beXX in userspace */ 17*f80ad8b4SAndroid Build Coastguard Worker #include <asm/byteorder.h> 18*f80ad8b4SAndroid Build Coastguard Worker 19*f80ad8b4SAndroid Build Coastguard Worker /* ERSPAN version 2 metadata header */ 20*f80ad8b4SAndroid Build Coastguard Worker struct erspan_md2 { 21*f80ad8b4SAndroid Build Coastguard Worker __be32 timestamp; 22*f80ad8b4SAndroid Build Coastguard Worker __be16 sgt; /* security group tag */ 23*f80ad8b4SAndroid Build Coastguard Worker #if defined(__LITTLE_ENDIAN_BITFIELD) 24*f80ad8b4SAndroid Build Coastguard Worker __u8 hwid_upper:2, 25*f80ad8b4SAndroid Build Coastguard Worker ft:5, 26*f80ad8b4SAndroid Build Coastguard Worker p:1; 27*f80ad8b4SAndroid Build Coastguard Worker __u8 o:1, 28*f80ad8b4SAndroid Build Coastguard Worker gra:2, 29*f80ad8b4SAndroid Build Coastguard Worker dir:1, 30*f80ad8b4SAndroid Build Coastguard Worker hwid:4; 31*f80ad8b4SAndroid Build Coastguard Worker #elif defined(__BIG_ENDIAN_BITFIELD) 32*f80ad8b4SAndroid Build Coastguard Worker __u8 p:1, 33*f80ad8b4SAndroid Build Coastguard Worker ft:5, 34*f80ad8b4SAndroid Build Coastguard Worker hwid_upper:2; 35*f80ad8b4SAndroid Build Coastguard Worker __u8 hwid:4, 36*f80ad8b4SAndroid Build Coastguard Worker dir:1, 37*f80ad8b4SAndroid Build Coastguard Worker gra:2, 38*f80ad8b4SAndroid Build Coastguard Worker o:1; 39*f80ad8b4SAndroid Build Coastguard Worker #else 40*f80ad8b4SAndroid Build Coastguard Worker #error "Please fix <asm/byteorder.h>" 41*f80ad8b4SAndroid Build Coastguard Worker #endif 42*f80ad8b4SAndroid Build Coastguard Worker }; 43*f80ad8b4SAndroid Build Coastguard Worker 44*f80ad8b4SAndroid Build Coastguard Worker struct erspan_metadata { 45*f80ad8b4SAndroid Build Coastguard Worker int version; 46*f80ad8b4SAndroid Build Coastguard Worker union { 47*f80ad8b4SAndroid Build Coastguard Worker __be32 index; /* Version 1 (type II)*/ 48*f80ad8b4SAndroid Build Coastguard Worker struct erspan_md2 md2; /* Version 2 (type III) */ 49*f80ad8b4SAndroid Build Coastguard Worker } u; 50*f80ad8b4SAndroid Build Coastguard Worker }; 51*f80ad8b4SAndroid Build Coastguard Worker 52*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI_ERSPAN_H */ 53