NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
fib.h
Go to the documentation of this file.
1 #ifndef NDNDPDK_FIB_FIB_H
2 #define NDNDPDK_FIB_FIB_H
3 
6 #include "entry.h"
7 
9 typedef struct Fib {
10  struct cds_lfht* lfht;
11  int startDepth;
12  uint32_t insertSeqNum;
13 } Fib;
14 
19 __attribute__((nonnull)) void
20 Fib_Clear(Fib* fib);
21 
23 __attribute__((nonnull)) bool
24 Fib_AllocBulk(struct rte_mempool* fibMp, FibEntry* entries[], unsigned count);
25 
31 __attribute__((nonnull)) void
32 Fib_Write(Fib* fib, FibEntry* entry);
33 
38 __attribute__((nonnull)) void
39 Fib_Erase(Fib* fib, FibEntry* entry);
40 
47 __attribute__((nonnull)) FibEntry*
48 Fib_Get(Fib* fib, LName name, uint64_t hash);
49 
56 __attribute__((nonnull)) static __rte_always_inline FibEntry*
57 Fib_Find(Fib* fib, LName name, uint64_t hash) {
58  return FibEntry_GetReal(Fib_Get(fib, name, hash));
59 }
60 
67 __attribute__((nonnull)) FibEntry*
68 Fib_Lpm(Fib* fib, const PName* name);
69 
70 #endif // NDNDPDK_FIB_FIB_H
void Fib_Clear(Fib *fib)
Delete all entries.
Definition: fib.c:11
struct Fib Fib
A replica of the Forwarding Information Base (FIB).
void Fib_Erase(Fib *fib, FibEntry *entry)
Erase given FIB entry.
Definition: fib.c:63
bool Fib_AllocBulk(struct rte_mempool *fibMp, FibEntry *entries[], unsigned count)
Allocate and zero entries.
Definition: fib.c:27
FibEntry * Fib_Get(Fib *fib, LName name, uint64_t hash)
Retrieve FIB entry.
Definition: fib.c:69
FibEntry * Fib_Lpm(Fib *fib, const PName *name)
Perform longest prefix match.
Definition: fib.c:86
void Fib_Write(Fib *fib, FibEntry *entry)
Insert or replace a FIB entry.
Definition: fib.c:43
A FIB entry.
Definition: entry.h:27
A replica of the Forwarding Information Base (FIB).
Definition: fib.h:9
uint32_t insertSeqNum
Definition: fib.h:12
int startDepth
starting depth ('M' of 2-stage LPM algorithm)
Definition: fib.h:11
struct cds_lfht * lfht
URCU hashtable.
Definition: fib.h:10
Name in linear buffer.
Definition: name.h:11
Parsed name.
Definition: name.h:139