rte_geneve_hdr(3)

πŸ’– rte_geneve_hdr(3) β€” Library Functions Manual πŸ’–

okay bestie, sit down, hydrate, and let's talk about rte_geneve_hdr β€” it's a library function page from the DPDK fam, and it is literally the blueprint for a GENEVE tunnel header. no cap. let's get into it πŸ¦‹


✨ NAME ✨

rte_geneve_hdr β€” the struct that is the GENEVE protocol header, bestie πŸ’…


🌸 SYNOPSIS 🌸

#include <rte_geneve.h>

πŸŽ€ Data Fields πŸŽ€

uint8_t ver:2
uint8_t opt_len:6
uint8_t oam:1
uint8_t critical:1
uint8_t reserved1:6
rte_be16_t proto
uint8_t vni [3]
uint8_t reserved2
uint32_t opts []

πŸ‘‘ Detailed Description πŸ‘‘

It's the GENEVE protocol header, periodt. the spec it's riding with is draft-ietf-nvo3-geneve-09. and it contains, in order:

  • 2-bits for version β€” and it must be 0, that's not a vibe, that's a rule πŸ™ˆ
  • 6-bits option length, measured in four byte multiples, and it does not include the eight bytes of the fixed tunnel header. so like, don't count those, bestie πŸ“
  • 1-bit control packet
  • 1-bit critical options in packet
  • 6-bits reserved
  • 16-bits Protocol Type. this is the protocol data unit that comes after the Geneve header, following the EtherType convention. and Ethernet itself? represented by the value 0x6558. iconic ⭐
  • 24-bits Virtual Network Identifier (VNI). virtual network unique identified. iykyk πŸ’œ
  • 8-bits reserved bits β€” must be 0 on transmission and just ignored on receipt. so, like, no funny business on the way out, but we're chill on the way in 😭
  • More-bits (that's optional) β€” variable length options
Definition at line 37 of file rte_geneve.h. ✨

🧚 Field Documentation 🧚

πŸ’– uint8_t ver

Version. say it with me: version.

Definition at line 39 of file rte_geneve.h.

πŸ’– uint8_t opt_len

Options length. how long the options are, that's the whole job πŸŽ€

Definition at line 40 of file rte_geneve.h.

πŸ’– uint8_t oam

Control packet. she's a control packet, okay? main character energy πŸ‘‘

Definition at line 41 of file rte_geneve.h.

πŸ’– uint8_t critical

Critical packet. the critical-ness levels are critical-ing πŸ”₯

Definition at line 42 of file rte_geneve.h.

πŸ’– uint8_t reserved1

Reserved. hands off, it's reserved πŸ’…

Definition at line 43 of file rte_geneve.h.

πŸ’– rte_be16_t proto

Protocol type. what protocol are we even doing here πŸ¦‹

Definition at line 51 of file rte_geneve.h.

πŸ’– uint8_t vni[3]

Virtual network identifier. the VNI itself, in all her 3-byte glory 🌸

Definition at line 52 of file rte_geneve.h.

πŸ’– uint8_t reserved2

Reserved. again. still reserved. still not yours πŸ™ˆ

Definition at line 53 of file rte_geneve.h.

πŸ’– uint32_t opts[]

Variable length options. she's variable, she's length-y, she's optional and she contains multitudes 🫢

Definition at line 54 of file rte_geneve.h.

🌈 Author 🌈

Generated automatically by Doxygen for DPDK from the source code. not a human, just a robot doing her lil thing πŸ€–πŸ’–


and that's the whole page, bestie!! πŸ’€πŸ§š this one's from DPDK, Version 25.11.3, and the manual page is rte_geneve_hdr(3). go forth and tunnel responsibly, mwah πŸ’…βœ¨

πŸ“¦ where this page comes from