NDN-DPDK
High-Speed Named Data Networking Forwarder
Loading...
Searching...
No Matches
entry.h
Go to the documentation of this file.
1#ifndef NDNDPDK_FIB_ENTRY_H
2#define NDNDPDK_FIB_ENTRY_H
3
5
6#include "../core/rttest.h"
7#include "../core/urcu.h"
8#include "../iface/faceid.h"
10#include "enum.h"
11#include <urcu/rculfhash.h>
12
22static_assert(sizeof(FibEntryDyn) % RTE_CACHE_LINE_SIZE == 0, "");
23
24typedef struct FibEntry FibEntry;
25
27struct FibEntry {
28 struct cds_lfht_node lfhtnode;
29 uint16_t nameL;
31 RTE_MARKER cachelineA_;
32
33 union {
39
45 };
46
47 uint32_t seqNum;
48
49 uint8_t nComps;
50 uint8_t nNexthops;
51
59 uint8_t height;
60
62
63 char b_[16];
64 struct rcu_head rcuhead;
65 RTE_MARKER cachelineB_;
67};
68static_assert(offsetof(FibEntry, cachelineA_) % RTE_CACHE_LINE_SIZE == 0, "");
69static_assert(offsetof(FibEntry, cachelineB_) % RTE_CACHE_LINE_SIZE == 0, "");
70
71// FibEntry.nComps must be able to represent maximum number of name components that
72// can fit in FibMaxNameLength octets.
73static_assert(UINT8_MAX >= FibMaxNameLength / 2, "");
74
75static inline FibEntry*
76FibEntry_GetReal(FibEntry* entry) {
77 if (unlikely(entry == NULL) || likely(entry->height == 0)) {
78 return entry;
79 }
80 return entry->realEntry;
81}
82
83__attribute__((nonnull)) static inline FibEntryDyn*
84FibEntry_PtrDyn(FibEntry* entry, int index) {
85 return &entry->dyn[index];
86}
87
88__attribute__((nonnull)) void
90
91typedef struct SgGlobal SgGlobal;
92
102
103#endif // NDNDPDK_FIB_ENTRY_H
uint16_t FaceID
Numeric face identifier.
Definition faceid.h:13
void FibEntry_DeferredFree(FibEntry *entry)
Definition entry.c:20
struct SgGlobal SgGlobal
Definition entry.h:91
@ FibMaxNameLength
Definition enum.h:7
@ FibScratchSize
Definition enum.h:9
@ FibMaxNexthops
Definition enum.h:8
Definition entry.h:13
uint32_t nRxData
Definition entry.h:15
char scratch[FibScratchSize]
Definition entry.h:19
RttValue rtt[FibMaxNexthops]
Definition entry.h:20
uint32_t nRxNacks
Definition entry.h:16
char a_[16]
Definition entry.h:18
uint32_t nRxInterests
Definition entry.h:14
uint32_t nTxInterests
Definition entry.h:17
A FIB entry.
Definition entry.h:27
StrategyCode * strategy
Forwarding strategy.
Definition entry.h:38
uint8_t nameV[FibMaxNameLength]
Definition entry.h:30
FibEntryDyn dyn[]
Definition entry.h:66
struct rcu_head rcuhead
Definition entry.h:64
uint32_t seqNum
sequence number to detect FIB changes
Definition entry.h:47
uint8_t nNexthops
number of nexthops
Definition entry.h:50
uint16_t nameL
TLV-LENGTH of name.
Definition entry.h:29
RTE_MARKER cachelineB_
Definition entry.h:65
uint8_t nComps
number of name components
Definition entry.h:49
FaceID nexthops[FibMaxNexthops]
Definition entry.h:61
RTE_MARKER cachelineA_
Definition entry.h:31
struct cds_lfht_node lfhtnode
Definition entry.h:28
FibEntry * realEntry
Real FIB entry.
Definition entry.h:44
uint8_t height
Height of a virtual node.
Definition entry.h:59
char b_[16]
Definition entry.h:63
Definition entry.h:93
TscTime now
Definition entry.h:95
uintptr_t goHandle
Definition entry.h:100
SgGlobal * global
Definition entry.h:94
uint8_t a_[16]
Definition entry.h:96
uint8_t b_[8]
Definition entry.h:99
FibEntryDyn * dyn
Definition entry.h:98
FibEntry * entry
Definition entry.h:97
SRTT and RTTVAR values in RTT estimator.
Definition rttest.h:13
Global static parameters.
Definition api.h:12
Forwarding strategy BPF programs.
Definition strategy-code.h:28
uint64_t TscTime
TSC clock time point.
Definition tsc.h:9