1 #ifndef NDNDPDK_PCCT_PCC_KEY_H
2 #define NDNDPDK_PCCT_PCC_KEY_H
6 #include "../ndni/interest.h"
8 #define PccKey_CountExtensions_(nameL, fhL) \
9 (SPDK_CEIL_DIV(nameL - PccKeyNameCapacity, PccKeyExtCapacity) + \
10 SPDK_CEIL_DIV(fhL - PccKeyFhCapacity, PccKeyExtCapacity))
27 __attribute__((nonnull))
static inline PccSearch
28 PccSearch_FromNames(
const PName* name,
const PInterest* interest) {
30 .
name = PName_ToLName(name),
31 .hash = PName_ComputeHash(name),
34 search.
fh = PName_ToLName(&interest->
fwHint);
35 search.
hash ^= PName_ComputeHash(&interest->
fwHint);
44 __attribute__((nonnull, returns_nonnull))
const char*
64 __attribute__((nonnull))
bool
68 __attribute__((nonnull(2))) static __rte_always_inline
bool
69 PccKey_MatchField_(
LName name, const uint8_t* firstV, uint16_t firstCapacity,
71 if (unlikely(name.length > firstCapacity)) {
74 return memcmp(firstV, name.value, name.length) == 0;
78 __attribute__((nonnull))
static inline bool
85 __attribute__((nonnull))
static inline bool
87 return search->
fh.
length == key->
fhL && PccKey_MatchName(key, search->
name) &&
92 __attribute__((nonnull))
static inline int
93 PccKey_CountExtensions(
const PccSearch* search) {
97 __attribute__((nonnull))
int
101 __attribute__((nonnull))
static __rte_always_inline
int
102 PccKey_WriteField_(
LName name, uint8_t* firstV, uint16_t firstCapacity,
PccKeyExt** next,
104 if (unlikely(name.
length > firstCapacity)) {
113 __attribute__((nonnull))
static inline void
126 __attribute__((nonnull))
static inline int
#define NDNDPDK_ASSERT(x)
Definition: common.h:60
@ NameMaxLength
Definition: enum.h:10
const char * PccSearch_ToDebugString(const PccSearch *search)
Convert search to a string for debug purpose.
Definition: pcc-key.c:9
struct PccKey PccKey
Hash key stored in PccEntry .
@ PccKeyMaxExts
Definition: pcc-key.h:16
@ PccKeyFhCapacity
Definition: pcc-key.h:14
@ PccKeyNameCapacity
Definition: pcc-key.h:13
@ PccKeyExtCapacity
Definition: pcc-key.h:15
#define PccKey_CountExtensions_(nameL, fhL)
Definition: pcc-key.h:8
bool PccKey_MatchFieldWithExt_(LName name, const uint8_t *firstV, uint16_t firstCapacity, const PccKeyExt *ext)
Definition: pcc-key.c:25
int PccKey_WriteFieldWithExt_(LName name, uint8_t *firstV, uint16_t firstCapacity, PccKeyExt **next, PccKeyExt *exts[])
Definition: pcc-key.c:43
struct PccSearch PccSearch
Hash key for searching among PccEntry .
Name in linear buffer.
Definition: name.h:11
const uint8_t * value
Definition: name.h:12
uint16_t length
Definition: name.h:13
Parsed Interest packet.
Definition: interest.h:9
int8_t activeFwHint
index of active forwarding hint
Definition: interest.h:21
PName fwHint
parsed forwarding hint at activeFwHint
Definition: interest.h:27
Parsed name.
Definition: name.h:139
PccKeyExt * next
Definition: pcc-key.h:60
uint8_t value[PccKeyExtCapacity]
Definition: pcc-key.h:61
Hash key stored in PccEntry .
Definition: pcc-key.h:50
PccKeyExt * fhExt
Definition: pcc-key.h:52
PccKeyExt * nameExt
Definition: pcc-key.h:51
uint8_t fhV[PccKeyFhCapacity]
Definition: pcc-key.h:56
uint8_t nameV[PccKeyNameCapacity]
Definition: pcc-key.h:55
uint16_t fhL
Definition: pcc-key.h:54
uint16_t nameL
Definition: pcc-key.h:53
Hash key for searching among PccEntry .
Definition: pcc-key.h:20
uint64_t hash
Definition: pcc-key.h:23
LName name
Definition: pcc-key.h:21
LName fh
Definition: pcc-key.h:22