1 #ifndef NDNDPDK_PCCT_PIT_ENTRY_H
2 #define NDNDPDK_PCCT_PIT_ENTRY_H
6 #include "../fib/fib.h"
45 static_assert(offsetof(
PitEntry, dns) <= RTE_CACHE_LINE_SIZE,
"");
53 __attribute__((nonnull))
static inline void
69 __attribute__((nonnull))
static inline void
71 PInterest* interest = Packet_GetInterestHdr(npkt);
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
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
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
FibEntry * PitEntry_FindFibEntry(PitEntry *entry, Fib *fib)
Retrieve FIB entry via PIT entry's FIB reference.
Definition: pit-entry.c:63
PitUp * PitEntry_FindUp(PitEntry *entry, FaceID face)
Find existing UP record.
Definition: pit-entry.c:214
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
PitDn * PitEntry_InsertDn(PitEntry *entry, Pit *pit, Packet *npkt)
Insert new DN record, or update existing DN record.
Definition: pit-entry.c:159
PitUp * PitEntry_ReserveUp(PitEntry *entry, FaceID face)
Find existing UP record, or reserve slot for new UP record.
Definition: pit-entry.c:228
@ PitFibPrefixLenBits_
Definition: pit-entry.h:13
const char * PitEntry_ToDebugString(PitEntry *entry)
Convert entry to a string for debug purpose.
Definition: pit-entry.c:12
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
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
bool mustBeFresh
Definition: interest.h:19
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
FaceID face
Definition: pit-dn.h:14
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
A PIT entry.
Definition: pit-entry.h:24
uint16_t fibPrefixL
TLV-LENGTH of FIB prefix.
Definition: pit-entry.h:34
uint64_t fibPrefixHash
hash value of FIB prefix
Definition: pit-entry.h:30
Packet * npkt
representative Interest packet
Definition: pit-entry.h:25
struct PitEntry::@85 __rte_packed
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
bool hasSgTimer
whether timeout is set by strategy or expiry
Definition: pit-entry.h:36
struct PccEntry * pccEntry
Definition: pit-entry.h:27
uint8_t nCanBePrefix
how many DNs want CanBePrefix?
Definition: pit-entry.h:33
PitDn dns[PitMaxDns]
Definition: pit-entry.h:40
uint32_t fibSeqNum
FIB entry sequence number.
Definition: pit-entry.h:32
bool mustBeFresh
entry for MustBeFresh 0 or 1?
Definition: pit-entry.h:35
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
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