zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

erspan.h (1058B) - Raw


      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 */