1#ifndef NDNDPDK_PCCT_PIT_ENTRY_H
2#define NDNDPDK_PCCT_PIT_ENTRY_H
45static_assert(offsetof(
PitEntry, dns) <= RTE_CACHE_LINE_SIZE,
"");
53__attribute__((nonnull))
static inline void
55 entry->fibPrefixL = fibEntry->
nameL;
56 entry->fibSeqNum = fibEntry->
seqNum;
69__attribute__((nonnull))
static inline void
71 PInterest* interest = Packet_GetInterestHdr(npkt);
76 entry->nCanBePrefix = (uint8_t)interest->
canBePrefix;
77 entry->mustBeFresh = interest->mustBeFresh;
79 entry->dns[0].face = 0;
80 entry->ups[0].face = 0;
83 PitEntry_SetFibEntry_(entry, interest, fibEntry);
87__attribute__((nonnull))
static inline void
89 if (likely(entry->
npkt != NULL)) {
90 rte_pktmbuf_free(Packet_ToMbuf(entry->
npkt));
95 rte_mempool_put(rte_mempool_from_obj(ext), ext);
104__attribute__((nonnull, returns_nonnull))
const char*
108__attribute__((nonnull))
static inline uint64_t
116__attribute__((nonnull))
static inline void
118 if (likely(entry->fibSeqNum == fibEntry->
seqNum)) {
122 PInterest* interest = Packet_GetInterestHdr(npkt);
123 PitEntry_SetFibEntry_(entry, interest, fibEntry);
135__attribute__((nonnull))
void
143__attribute__((nonnull))
bool
146__attribute__((nonnull))
void
153__attribute__((nonnull))
FaceID
162__attribute__((nonnull))
PitDn*
171__attribute__((nonnull))
PitUp*
182__attribute__((nonnull))
PitUp*
186__attribute__((nonnull))
void
struct __rte_packed_begin vlanhdr __rte_packed_end
uint16_t FaceID
Numeric face identifier.
Definition faceid.h:13
@ FibMaxNameLength
Definition enum.h:7
struct Packet Packet
Definition common.h:11
@ PitMaxExtUps
Definition pit-const.h:10
@ PitMaxExtDns
Definition pit-const.h:9
@ PitMaxUps
Definition pit-const.h:8
@ PitScratchSize
Definition pit-const.h:11
@ PitMaxDns
Definition pit-const.h:7
PitDn * PitEntry_InsertDn(PitEntry *entry, Pit *pit, Packet *npkt)
Insert new DN record, or update existing DN record.
Definition pit-entry.c:159
void PitEntry_GetTxInterestIlHl(PitEntry *entry, TscTime now, uint32_t *lifetime, uint8_t *hopLimit)
Calculate InterestLifetime and HopLimit for TX Interest.
Definition pit-entry.c:250
@ PitFibPrefixLenBits_
Definition pit-entry.h:13
PitUp * PitEntry_FindUp(PitEntry *entry, FaceID face)
Find existing UP record.
Definition pit-entry.c:214
const char * PitEntry_ToDebugString(PitEntry *entry)
Convert entry to a string for debug purpose.
Definition pit-entry.c:12
PitUp * PitEntry_ReserveUp(PitEntry *entry, FaceID face)
Find existing UP record, or reserve slot for new UP record.
Definition pit-entry.c:228
void PitEntry_SetExpiryTimer(PitEntry *entry, Pit *pit)
Set timer to erase PIT entry when its last PitDn expires.
Definition pit-entry.c:77
FaceID PitEntry_FindDuplicateNonce(PitEntry *entry, uint32_t nonce, FaceID rxFace)
Find duplicate nonce among DN records other than rxFace.
Definition pit-entry.c:112
void PitEntry_Timeout_(MinTmr *tmr, uintptr_t pitPtr)
Definition pit-entry.c:97
bool PitEntry_SetSgTimer(PitEntry *entry, Pit *pit, TscDuration after)
Set timer to invoke strategy after after.
Definition pit-entry.c:84
FibEntry * PitEntry_FindFibEntry(PitEntry *entry, Fib *fib)
Retrieve FIB entry via PIT entry's FIB reference.
Definition pit-entry.c:63
A FIB entry.
Definition entry.h:27
uint32_t seqNum
sequence number to detect FIB changes
Definition entry.h:47
uint16_t nameL
TLV-LENGTH of name.
Definition entry.h:29
uint8_t nComps
number of name components
Definition entry.h:49
A replica of the Forwarding Information Base (FIB).
Definition fib.h:9
Timer on minute scheduler.
Definition mintmr.h:9
Parsed Interest packet.
Definition interest.h:9
bool canBePrefix
Definition interest.h:18
int8_t activeFwHint
index of active forwarding hint
Definition interest.h:21
PName fwHint
parsed forwarding hint at activeFwHint
Definition interest.h:27
PName name
Definition interest.h:24
Parsed name.
Definition name.h:139
PIT-CS composite entry.
Definition pcc-entry.h:56
A PIT downstream record.
Definition pit-dn.h:11
Definition pit-entry.h:47
PitDn dns[PitMaxExtDns]
Definition pit-entry.h:48
PitEntryExt * next
Definition pit-entry.h:50
PitUp ups[PitMaxExtUps]
Definition pit-entry.h:49
Definition pit-entry.h:31
bool hasSgTimer
whether timeout is set by strategy or expiry
Definition pit-entry.h:36
bool mustBeFresh
entry for MustBeFresh 0 or 1?
Definition pit-entry.h:35
uint16_t fibPrefixL
TLV-LENGTH of FIB prefix.
Definition pit-entry.h:34
uint8_t nCanBePrefix
how many DNs want CanBePrefix?
Definition pit-entry.h:33
uint32_t fibSeqNum
FIB entry sequence number.
Definition pit-entry.h:32
A PIT entry.
Definition pit-entry.h:24
uint64_t fibPrefixHash
hash value of FIB prefix
Definition pit-entry.h:30
Packet * npkt
representative Interest packet
Definition pit-entry.h:25
PitUp ups[PitMaxUps]
Definition pit-entry.h:41
TscTime expiry
when all DNs expire
Definition pit-entry.h:26
char sgScratch[PitScratchSize]
Definition pit-entry.h:43
MinTmr timeout
timeout timer
Definition pit-entry.h:28
struct PccEntry * pccEntry
Definition pit-entry.h:27
PitDn dns[PitMaxDns]
Definition pit-entry.h:40
PitEntryExt * ext
Definition pit-entry.h:39
A PIT upstream record.
Definition pit-up.h:14
The Pending Interest Table (PIT).
Definition pit-struct.h:20
int64_t TscDuration
Duration in TscTime unit.
Definition tsc.h:12
uint64_t TscTime
TSC clock time point.
Definition tsc.h:9