1 #ifndef NDNDPDK_PCCT_PIT_DN_UP_IT_H
2 #define NDNDPDK_PCCT_PIT_DN_UP_IT_H
26 __attribute__((nonnull))
static inline PitDnUpIt_
27 PitDnUpIt_New_(
PitEntry* entry,
int maxInEntry,
void* array) {
36 __attribute__((nonnull))
bool
39 __attribute__((nonnull))
static inline bool
42 if (likely(it->
i < it->
max)) {
48 __attribute__((nonnull))
static inline void
52 it->
array = RTE_PTR_ADD(ext, offsetInExt);
57 __attribute__((nonnull))
static inline void
58 PitDnUpIt_Next_(
PitDnUpIt_* it,
size_t sizeofRecord,
int maxInExt,
size_t offsetInExt) {
63 if (likely(it->
i < it->
max)) {
71 PitDnUpIt_EnterExt_(it, ext, maxInExt, offsetInExt);
82 __attribute__((nonnull))
static inline void
85 if (likely(next < it->max)) {
118 #define PitDn_Each(var, entry, canExtend) \
119 for (PitDnIt var = PitDnUpIt_New_((entry), PitMaxDns, (entry)->dns); \
120 PitDnUpIt_Valid_(&var, (canExtend), (entry), PitMaxExtDns, offsetof(PitEntryExt, dns)); \
121 PitDnUpIt_Next_(&var, sizeof(PitDn), PitMaxExtDns, offsetof(PitEntryExt, dns)))
131 __attribute__((nonnull))
static inline void
133 int next = it->
i + 1;
134 if (likely(next < it->max)) {
150 #define PitUp_Each(var, entry, canExtend) \
151 for (PitUpIt var = PitDnUpIt_New_((entry), PitMaxUps, (entry)->ups); \
152 PitDnUpIt_Valid_(&var, (canExtend), (entry), PitMaxExtUps, offsetof(PitEntryExt, ups)); \
153 PitDnUpIt_Next_(&var, sizeof(PitUp), PitMaxExtUps, offsetof(PitEntryExt, ups)))
#define NDNDPDK_ASSERT(x)
Definition: common.h:60
PitDnUpIt_ PitDnIt
Iterator of DN slots in PIT entry.
Definition: pit-iterator.h:75
bool PitDnUpIt_Extend_(PitDnUpIt_ *it, PitEntry *entry, int maxInExt, size_t offsetInExt)
Definition: pit-iterator.c:5
PitDnUpIt_ PitUpIt
Iterator of UP slots in PIT entry.
Definition: pit-iterator.h:124
struct PitDnUpIt_ PitDnUpIt_
Definition: pit-iterator.h:8
int index
index of PitDn/PitUp
Definition: pit-iterator.h:14
int max
(pvt) upper bound of this array
Definition: pit-iterator.h:17
void * current
Definition: pit-iterator.h:10
PitUp * up
current PitUp
Definition: pit-iterator.h:12
int i
(pvt) index within this array
Definition: pit-iterator.h:16
PitUp * ups
Definition: pit-iterator.h:21
PitDn * dn
current PitDn
Definition: pit-iterator.h:11
PitDn * dns
Definition: pit-iterator.h:20
void * array
Definition: pit-iterator.h:19
PitEntryExt ** nextPtr
(pvt) next extension
Definition: pit-iterator.h:23
A PIT downstream record.
Definition: pit-dn.h:11
FaceID face
Definition: pit-dn.h:14
Definition: pit-entry.h:47
PitEntryExt * next
Definition: pit-entry.h:50
A PIT entry.
Definition: pit-entry.h:24
PitEntryExt * ext
Definition: pit-entry.h:39
A PIT upstream record.
Definition: pit-up.h:14
FaceID face
the upstream face
Definition: pit-up.h:16