linux/include/net/erspan.h
<<
>>
Prefs
   1#ifndef __LINUX_ERSPAN_H
   2#define __LINUX_ERSPAN_H
   3
   4/*
   5 * GRE header for ERSPAN encapsulation (8 octets [34:41]) -- 8 bytes
   6 *       0                   1                   2                   3
   7 *      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   8 *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   9 *     |0|0|0|1|0|00000|000000000|00000|    Protocol Type for ERSPAN   |
  10 *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  11 *     |      Sequence Number (increments per packet per session)      |
  12 *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  13 *
  14 *  Note that in the above GRE header [RFC1701] out of the C, R, K, S,
  15 *  s, Recur, Flags, Version fields only S (bit 03) is set to 1. The
  16 *  other fields are set to zero, so only a sequence number follows.
  17 *
  18 *  ERSPAN Type II header (8 octets [42:49])
  19 *  0                   1                   2                   3
  20 *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  21 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  22 * |  Ver  |          VLAN         | COS | En|T|    Session ID     |
  23 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  24 * |      Reserved         |                  Index                |
  25 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  26 *
  27 * GRE proto ERSPAN type II = 0x88BE, type III = 0x22EB
  28 */
  29
  30#define ERSPAN_VERSION  0x1
  31
  32#define VER_MASK        0xf000
  33#define VLAN_MASK       0x0fff
  34#define COS_MASK        0xe000
  35#define EN_MASK         0x1800
  36#define T_MASK          0x0400
  37#define ID_MASK         0x03ff
  38#define INDEX_MASK      0xfffff
  39
  40enum erspan_encap_type {
  41        ERSPAN_ENCAP_NOVLAN = 0x0,      /* originally without VLAN tag */
  42        ERSPAN_ENCAP_ISL = 0x1,         /* originally ISL encapsulated */
  43        ERSPAN_ENCAP_8021Q = 0x2,       /* originally 802.1Q encapsulated */
  44        ERSPAN_ENCAP_INFRAME = 0x3,     /* VLAN tag perserved in frame */
  45};
  46
  47struct erspan_metadata {
  48        __be32 index;   /* type II */
  49};
  50
  51struct erspanhdr {
  52        __be16 ver_vlan;
  53#define VER_OFFSET  12
  54        __be16 session_id;
  55#define COS_OFFSET  13
  56#define EN_OFFSET   11
  57#define T_OFFSET    10
  58        struct erspan_metadata md;
  59};
  60
  61#endif
  62