NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
token.h
Go to the documentation of this file.
1 #ifndef NDNDPDK_FWDP_TOKEN_H
2 #define NDNDPDK_FWDP_TOKEN_H
3 
6 #include "../pcct/pcc-entry.h"
7 
8 enum {
10 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
13 #else
16 #endif
17 };
18 static_assert(FwTokenLength == PccTokenSize + 1, "");
19 static_assert(offsetof(LpPitToken, value) + FwTokenOffsetPccToken >= 0, "");
20 static_assert(RTE_SIZEOF_FIELD(LpPitToken, value) >= sizeof(uint64_t), "");
21 
22 __attribute__((nonnull)) static __rte_always_inline void
23 FwToken_Set(LpPitToken* token, uint8_t fwdID, uint64_t pccToken) {
24  *token = (LpPitToken){0};
25  *(unaligned_uint64_t*)RTE_PTR_ADD(token->value, FwTokenOffsetPccToken) = pccToken;
26  token->value[FwTokenOffsetFwdID] = fwdID;
27  token->length = FwTokenLength;
28 }
29 
30 __attribute__((nonnull)) static __rte_always_inline uint8_t
31 FwToken_GetFwdID(const LpPitToken* token) {
32  return token->value[FwTokenOffsetFwdID];
33 }
34 
35 __attribute__((nonnull)) static __rte_always_inline uint64_t
36 FwToken_GetPccToken(const LpPitToken* token) {
37  return *(const unaligned_uint64_t*)RTE_PTR_ADD(token->value, FwTokenOffsetPccToken);
38 }
39 
40 #endif // NDNDPDK_FWDP_TOKEN_H
struct LpPitToken LpPitToken
NDNLPv2 PIT token value.
@ PccTokenSize
Definition: pcc-entry.h:12
NDNLPv2 PIT token value.
Definition: lp.h:35
uint8_t value[32]
Definition: lp.h:37
uint8_t length
Definition: lp.h:36
@ FwTokenOffsetPccToken
Definition: token.h:11
@ FwTokenLength
Definition: token.h:9
@ FwTokenOffsetFwdID
Definition: token.h:12