rte_geneve_hdr(3)

๐Ÿ“ฆ version 26.03, in nixos 26.05, nixpkgs unstable

Okay bestie, welcome to the rte_geneve_hdr manual page from the DPDK Library Functions Manual. It's giving networking header realness, and we're gonna get through every single detail together. ๐Ÿ’–


โœจ NAME โœจ

rte_geneve_hdr โ€” that's literally the whole name, no cap. Iconic.


โœจ SYNOPSIS โœจ

#include <rte_geneve.h>

๐Ÿงฌ Data Fields ๐Ÿงฌ

  • uint8_t ver:2 โ€” version bits, 2 of them ๐ŸŒ€
  • uint8_t opt_len:6 โ€” options length, 6 bits bestie
  • uint8_t oam:1 โ€” control packet, just 1 bit
  • uint8_t critical:1 โ€” critical packet, also 1 bit
  • uint8_t reserved1:6 โ€” reserved, 6 bits of "don't touch" energy
  • rte_be16_t proto โ€” protocol type, big-endian cutie
  • uint8_t vni [3] โ€” virtual network identifier, 3 bytes of it
  • uint8_t reserved2 โ€” reserved, one byte of reservedness
  • uint32_t opts [] โ€” variable length options, flexible queen

๐Ÿ’– Detailed Description ๐Ÿ’–

So this is the GENEVE protocol header โ€” like, the actual header struct. It's from draft-ietf-nvo3-geneve-09, which is the whole vibe. Here's what's inside, fr fr:

  • 2-bits version (must be 0). No exceptions, bestie. ๐Ÿšจ
  • 6-bits option length in four byte multiples, not including the eight bytes of the fixed tunnel header. Math is math. ๐Ÿงฎ
  • 1-bit control packet. Just one bit doing its thing.
  • 1-bit critical options in packet. Critical = important, obviously.
  • 6-bits reserved. Just sitting there, reserved.
  • 16-bits Protocol Type. The protocol data unit after the Geneve header following the EtherType convention. Ethernet itself is represented by the value 0x6558. Remember that number, it's iconic. ๐ŸŒˆ
  • 24-bits Virtual Network Identifier (VNI). Virtual network unique identified. (Yes, the original says "unique identified" โ€” we're keeping it exactly like that. ๐Ÿ’€)
  • 8-bits reserved bits (must be 0 on transmission and ignored on receipt). So on send: must be 0. On receive: ignore them. Periodt. ๐Ÿซถ
  • More-bits (optional) variable length options. Optional but slay.
Definition at line 37 of file rte_geneve.h.

๐Ÿ” Field Documentation ๐Ÿ”

uint8_t ver

Version. Literally just version. โœจ

Definition at line 39 of file rte_geneve.h.

uint8_t opt_len

Options length. The length of the options, bestie. ๐Ÿ“

Definition at line 40 of file rte_geneve.h.

uint8_t oam

Control packet. It's giving control packet energy. ๐ŸŽ›๏ธ

Definition at line 41 of file rte_geneve.h.

uint8_t critical

Critical packet. Highkey critical. ๐Ÿšฉ

Definition at line 42 of file rte_geneve.h.

uint8_t reserved1

Reserved. Don't ask, just reserve. ๐Ÿ™ˆ

Definition at line 43 of file rte_geneve.h.

rte_be16_t proto

Protocol type. Big-endian protocol type, we love to see it. ๐Ÿ’…

Definition at line 51 of file rte_geneve.h.

uint8_t vni[3]

Virtual network identifier. Three bytes of VNI realness. ๐Ÿฆ‹

Definition at line 52 of file rte_geneve.h.

uint8_t reserved2

Reserved. Again. Reserved. ๐Ÿ’€

Definition at line 53 of file rte_geneve.h.

uint32_t opts[]

Variable length options. Flexible, optional, and living its best life. ๐ŸŽ€

Definition at line 54 of file rte_geneve.h.


๐Ÿ‘‘ Author ๐Ÿ‘‘

Generated automatically by Doxygen for DPDK from the source code. Not a human, not a bestie, just Doxygen doing its thing. ๐Ÿค–


And that's the whole page, bestie! The footer just says DPDK Version 26.03.0 (no date, sorry โ€” that's all it gave us), and the page is rte_geneve_hdr(3). Slay. ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from