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