NDN-DPDK
High-Speed Named Data Networking Forwarder
Loading...
Searching...
No Matches
pit-result.h
Go to the documentation of this file.
1#ifndef NDNDPDK_PCCT_PIT_RESULT_H
2#define NDNDPDK_PCCT_PIT_RESULT_H
3
5
6#include "pcc-entry.h"
7
14
23
25typedef enum __rte_packed_begin PitFindResultFlag {
27
28 PIT_FIND_PIT0 = RTE_BIT32(0),
29 PIT_FIND_PIT1 = RTE_BIT32(1),
30
33 PIT_FIND_NEED_DIGEST = RTE_BIT32(2),
35
41
42static inline bool
43PitFindResult_Is(PitFindResult res, PitFindResultFlag flag) {
44 if (flag == PIT_FIND_NONE) {
45 return res.kind == PIT_FIND_NONE;
46 }
47 return (res.kind & flag) != 0;
48}
49
50static inline PitEntry*
51PitFindResult_GetPitEntry0(PitFindResult res) {
52 if (!PitFindResult_Is(res, PIT_FIND_PIT0)) {
53 return NULL;
54 }
55 return PccEntry_GetPitEntry0(res.entry);
56}
57
58static inline PitEntry*
59PitFindResult_GetPitEntry1(PitFindResult res) {
60 if (!PitFindResult_Is(res, PIT_FIND_PIT1)) {
61 return NULL;
62 }
63 return PccEntry_GetPitEntry1(res.entry);
64}
65
71__attribute__((returns_nonnull)) static inline PInterest*
72PitFindResult_GetInterest(PitFindResult res) {
73 PitEntry* pitEntry = PitFindResult_GetPitEntry0(res);
74 if (pitEntry == NULL) {
75 pitEntry = PitFindResult_GetPitEntry1(res);
76 }
77 NDNDPDK_ASSERT(pitEntry != NULL);
78 return Packet_GetInterestHdr(pitEntry->npkt);
79}
80
81#endif // NDNDPDK_PCCT_PIT_RESULT_H
struct __rte_packed_begin vlanhdr __rte_packed_end
#define NDNDPDK_ASSERT(x)
Definition common.h:60
enum __rte_packed_begin PitFindResultFlag PitFindResultFlag
Result flag of PIT find, bitwise OR.
Definition pit-result.h:25
PIT_INSERT_CS
found existing CS entry that matches the Interest
Definition pit-result.h:12
enum __rte_packed_begin PitInsertResultKind PitInsertResultKind
Result kind of PIT insert.
Definition pit-result.h:9
PIT_INSERT_PIT
created or found PIT entry
Definition pit-result.h:11
PIT_INSERT_FULL
PIT is full, cannot insert.
Definition pit-result.h:10
PIT_FIND_PIT1
matched PIT entry of MustBeFresh=1
Definition pit-result.h:29
PIT_FIND_PIT0
matched PIT entry of MustBeFresh=0
Definition pit-result.h:28
PIT_FIND_NONE
no PIT match
Definition pit-result.h:26
PIT_FIND_NEED_DIGEST
Definition pit-result.h:33
A CS entry.
Definition cs-entry.h:22
Parsed Interest packet.
Definition interest.h:9
PIT-CS composite entry.
Definition pcc-entry.h:56
A PIT entry.
Definition pit-entry.h:24
Packet * npkt
representative Interest packet
Definition pit-entry.h:25
Result of PIT find.
Definition pit-result.h:37
PccEntry * entry
Definition pit-result.h:38
uint8_t kind
Definition pit-result.h:39
Result of PIT insert.
Definition pit-result.h:16
PitEntry * pitEntry
PIT entry, valid if kind==PIT_INSERT_PIT.
Definition pit-result.h:19
PitInsertResultKind kind
Definition pit-result.h:17
CsEntry * csEntry
direct CS entry, valid if kind==PIT_INSERT_CS
Definition pit-result.h:20