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_STRATEGYAPI_FIB_H
2 #define NDNDPDK_STRATEGYAPI_FIB_H
3 
6 #include "../core/rttest.h"
7 #include "../fib/enum.h"
8 #include "common.h"
9 
10 typedef struct SgFibEntryDyn {
11  uint8_t a_[32];
15 
16 typedef struct SgFibEntry {
17  uint8_t a_[525];
18  uint8_t nNexthops;
19  uint8_t b_[2];
22 
23 typedef uint32_t SgFibNexthopFilter;
24 
25 SUBROUTINE bool
27  static_assert(__builtin_types_compatible_p(typeof(filter), uint32_t), "");
28  return rte_bit_test(&filter, i);
29 }
30 
44 typedef struct SgFibNexthopIt {
45  const SgFibEntry* entry;
47  uint8_t i;
50 
51 SUBROUTINE bool
53  return it->i < it->entry->nNexthops;
54 }
55 
56 SUBROUTINE void
58  for (; SgFibNexthopIt_Valid(it); ++it->i) {
59  if (SgFibNexthopFilter_Rejected(it->filter, it->i)) {
60  continue;
61  }
62  it->nh = it->entry->nexthops[it->i];
63  return;
64  }
65  it->nh = 0;
66 }
67 
68 SUBROUTINE void
70  it->entry = entry;
71  it->filter = filter;
72  it->i = 0;
74 }
75 
76 SUBROUTINE void
78  ++it->i;
80 }
81 
82 #endif // NDNDPDK_STRATEGYAPI_FIB_H
uint16_t FaceID
Numeric face identifier.
Definition: faceid.h:13
@ FibScratchSize
Definition: enum.h:9
@ FibMaxNexthops
Definition: enum.h:8
#define SUBROUTINE
Indicate that a function is a subroutine.
Definition: common.h:20
struct SgFibEntryDyn SgFibEntryDyn
uint32_t SgFibNexthopFilter
Definition: fib.h:23
SUBROUTINE bool SgFibNexthopFilter_Rejected(SgFibNexthopFilter filter, uint8_t i)
Definition: fib.h:26
SUBROUTINE bool SgFibNexthopIt_Valid(const SgFibNexthopIt *it)
Definition: fib.h:52
struct SgFibNexthopIt SgFibNexthopIt
Iterator of FIB nexthops passing a filter.
struct SgFibEntry SgFibEntry
SUBROUTINE void SgFibNexthopIt_Next(SgFibNexthopIt *it)
Definition: fib.h:77
SUBROUTINE void SgFibNexthopIt_Init(SgFibNexthopIt *it, const SgFibEntry *entry, SgFibNexthopFilter filter)
Definition: fib.h:69
SUBROUTINE void SgFibNexthopIt_Advance_(SgFibNexthopIt *it)
Definition: fib.h:57
SRTT and RTTVAR values in RTT estimator.
Definition: rttest.h:13
Definition: fib.h:10
uint8_t scratch[FibScratchSize]
Definition: fib.h:12
RttValue rtt[FibMaxNexthops]
Definition: fib.h:13
uint8_t a_[32]
Definition: fib.h:11
Definition: fib.h:16
FaceID nexthops[FibMaxNexthops]
Definition: fib.h:20
uint8_t b_[2]
Definition: fib.h:19
uint8_t a_[525]
Definition: fib.h:17
uint8_t nNexthops
Definition: fib.h:18
Iterator of FIB nexthops passing a filter.
Definition: fib.h:44
FaceID nh
Definition: fib.h:48
const SgFibEntry * entry
Definition: fib.h:45
SgFibNexthopFilter filter
Definition: fib.h:46
uint8_t i
Definition: fib.h:47