dpdk/lib/net/rte_gre.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: BSD-3-Clause
   2 * Copyright 2016 6WIND S.A.
   3 */
   4
   5#ifndef _RTE_GRE_H_
   6#define _RTE_GRE_H_
   7
   8#include <stdint.h>
   9#include <rte_byteorder.h>
  10
  11/**
  12 * @file
  13 *
  14 * GRE headers definition.
  15 *
  16 * Generic Routing Encapsulation (GRE) is a tunneling protocol
  17 * that can encapsulate a wide variety of network layer protocols
  18 * inside virtual point-to-point links or point-to-multipoint links
  19 * over an Internet Protocol network.
  20 */
  21
  22#ifdef __cplusplus
  23extern "C" {
  24#endif
  25
  26/**
  27 * GRE Header
  28 */
  29__extension__
  30struct rte_gre_hdr {
  31#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
  32        uint16_t res2:4; /**< Reserved */
  33        uint16_t s:1;    /**< Sequence Number Present bit */
  34        uint16_t k:1;    /**< Key Present bit */
  35        uint16_t res1:1; /**< Reserved */
  36        uint16_t c:1;    /**< Checksum Present bit */
  37        uint16_t ver:3;  /**< Version Number */
  38        uint16_t res3:5; /**< Reserved */
  39#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN
  40        uint16_t c:1;    /**< Checksum Present bit */
  41        uint16_t res1:1; /**< Reserved */
  42        uint16_t k:1;    /**< Key Present bit */
  43        uint16_t s:1;    /**< Sequence Number Present bit */
  44        uint16_t res2:4; /**< Reserved */
  45        uint16_t res3:5; /**< Reserved */
  46        uint16_t ver:3;  /**< Version Number */
  47#endif
  48        uint16_t proto;  /**< Protocol Type */
  49} __rte_packed;
  50
  51/**
  52 * Optional field checksum in GRE header
  53 */
  54struct rte_gre_hdr_opt_checksum_rsvd {
  55        rte_be16_t checksum;
  56        rte_be16_t reserved1;
  57} __rte_packed;
  58
  59/**
  60 * Optional field key in GRE header
  61 */
  62struct rte_gre_hdr_opt_key {
  63        rte_be32_t key;
  64} __rte_packed;
  65
  66/**
  67 * Optional field sequence in GRE header
  68 */
  69struct rte_gre_hdr_opt_sequence {
  70        rte_be32_t sequence;
  71} __rte_packed;
  72
  73#ifdef __cplusplus
  74}
  75#endif
  76
  77#endif /* RTE_GRE_H_ */
  78