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