NDN-DPDK
High-Speed Named Data Networking Forwarder
Loading...
Searching...
No Matches
token.h
Go to the documentation of this file.
1#ifndef NDNDPDK_FWDP_TOKEN_H
2#define NDNDPDK_FWDP_TOKEN_H
3
5
6#include "../pcct/pcc-entry.h"
7
8enum {
10#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
13#else
16#endif
17};
18static_assert(FwTokenLength == PccTokenSize + 1, "");
19static_assert(offsetof(LpPitToken, value) + FwTokenOffsetPccToken >= 0, "");
20static_assert(RTE_SIZEOF_FIELD(LpPitToken, value) >= sizeof(uint64_t), "");
21
22__attribute__((nonnull)) static __rte_always_inline void
23FwToken_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
31FwToken_GetFwdID(const LpPitToken* token) {
32 return token->value[FwTokenOffsetFwdID];
33}
34
35__attribute__((nonnull)) static __rte_always_inline uint64_t
36FwToken_GetPccToken(const LpPitToken* token) {
37 return *(const unaligned_uint64_t*)RTE_PTR_ADD(token->value, FwTokenOffsetPccToken);
38}
39
40#endif // NDNDPDK_FWDP_TOKEN_H
@ 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