NDN-DPDK
High-Speed Named Data Networking Forwarder
Loading...
Searching...
No Matches
data.h
Go to the documentation of this file.
1#ifndef NDNDPDK_NDNI_DATA_H
2#define NDNDPDK_NDNI_DATA_H
3
5
6#include "name.h"
7
9typedef struct PData {
11 uint32_t freshness;
14 uint32_t contentOffset;
15 uint32_t contentL;
16 RTE_MARKER64 a_;
18 RTE_MARKER64 b_;
19 uint8_t helperScratch[192];
21
28__attribute__((nonnull)) bool
29PData_Parse(PData* data, struct rte_mbuf* pkt, ParseFor parseFor);
30
32__attribute__((nonnull)) DataSatisfyResult
33PData_CanSatisfy(PData* data, PInterest* interest);
34
40__attribute__((nonnull, returns_nonnull)) struct rte_crypto_op*
42
47__attribute__((nonnull)) uint16_t
48DataDigest_Enqueue(CryptoQueuePair* cqp, struct rte_crypto_op** ops, uint16_t count);
49
56__attribute__((nonnull)) bool
57DataDigest_Finish(struct rte_crypto_op* op, Packet** npkt);
58
60extern uint8_t DataEnc_NoMetaInfo[];
61
76__attribute__((nonnull)) void
77DataEnc_PrepareMetaInfo(uint8_t* room, ContentType ct, uint32_t freshness, LName finalBlock);
78
83__attribute__((nonnull)) static inline uint16_t
84DataEnc_SizeofMetaInfo(const uint8_t* meta) {
85 return likely(meta[0] == TtMetaInfo) ? 2 + meta[1] : 0;
86}
87
97__attribute__((nonnull)) struct rte_mbuf*
98DataEnc_EncodeTpl(LName prefix, LName suffix, const uint8_t* meta, struct rte_mbuf* tplV,
99 struct iovec* tplIov, int tplIovcnt, PacketMempools* mp, PacketTxAlign align);
100
111__attribute__((nonnull)) struct rte_mbuf*
112DataEnc_EncodeRoom(LName prefix, LName suffix, const uint8_t* meta, uint32_t roomL,
113 struct iovec* roomIov, int* roomIovcnt, PacketMempools* mp, PacketTxAlign align);
114
121__attribute__((nonnull)) Packet*
122DataEnc_Sign(struct rte_mbuf* pkt, PacketMempools* mp, PacketTxAlign align);
123
125typedef struct DataGen {
126 struct rte_mbuf* tpl;
128 const uint8_t* meta;
129 struct iovec contentIov[1];
131
144__attribute__((nonnull)) static inline Packet*
145DataGen_Encode(DataGen* gen, LName prefix, PacketMempools* mp, PacketTxAlign align) {
146 struct rte_mbuf* pkt =
147 DataEnc_EncodeTpl(prefix, gen->suffix, gen->meta, gen->tpl, gen->contentIov, 1, mp, align);
148 if (unlikely(pkt == NULL)) {
149 return NULL;
150 }
151 return DataEnc_Sign(pkt, mp, align);
152}
153
154#endif // NDNDPDK_NDNI_DATA_H
uint8_t DataEnc_NoMetaInfo[]
Indicate that Data MetaInfo field should be omitted.
Definition data.c:26
struct rte_crypto_op * DataDigest_Prepare(CryptoQueuePair *cqp, Packet *npkt)
Prepare a crypto_op for Data digest computation.
Definition data.c:142
struct rte_mbuf * DataEnc_EncodeTpl(LName prefix, LName suffix, const uint8_t *meta, struct rte_mbuf *tplV, struct iovec *tplIov, int tplIovcnt, PacketMempools *mp, PacketTxAlign align)
Encode Data with Content from template.
Definition data.c:292
Packet * DataEnc_Sign(struct rte_mbuf *pkt, PacketMempools *mp, PacketTxAlign align)
Append Null signature to Data.
Definition data.c:352
bool PData_Parse(PData *data, struct rte_mbuf *pkt, ParseFor parseFor)
Parse Data.
Definition data.c:67
uint16_t DataDigest_Enqueue(CryptoQueuePair *cqp, struct rte_crypto_op **ops, uint16_t count)
Enqueue crypto_ops for Data digest computation.
Definition data.c:157
struct rte_mbuf * DataEnc_EncodeRoom(LName prefix, LName suffix, const uint8_t *meta, uint32_t roomL, struct iovec *roomIov, int *roomIovcnt, PacketMempools *mp, PacketTxAlign align)
Encode Data with unfilled Content room.
Definition data.c:315
DataSatisfyResult PData_CanSatisfy(PData *data, PInterest *interest)
Determine whether Data can satisfy Interest.
Definition data.c:132
bool DataDigest_Finish(struct rte_crypto_op *op, Packet **npkt)
Finish Data digest computation.
Definition data.c:166
void DataEnc_PrepareMetaInfo(uint8_t *room, ContentType ct, uint32_t freshness, LName finalBlock)
Prepare Data MetaInfo.
Definition data.c:175
ContentType
Definition an.h:61
@ TtMetaInfo
Definition an.h:41
struct Packet Packet
Definition common.h:11
DataSatisfyResult
Definition enum.h:23
ParseFor
Definition enum.h:29
@ ImplicitDigestLength
Definition enum.h:11
Crypto queue pair.
Definition cryptodev.h:12
Data encoder optimized for traffic generator.
Definition data.h:125
struct rte_mbuf * tpl
Definition data.h:126
const uint8_t * meta
Definition data.h:128
LName suffix
Definition data.h:127
struct iovec contentIov[1]
Definition data.h:129
Name in linear buffer.
Definition name.h:11
Parsed Data packet.
Definition data.h:9
RTE_MARKER64 a_
Definition data.h:16
uint32_t contentOffset
Content TLV-VALUE offset.
Definition data.h:14
bool isFinalBlock
Definition data.h:13
uint32_t freshness
FreshnessPeriod in millis.
Definition data.h:11
bool hasDigest
Definition data.h:12
uint32_t contentL
Content TLV-LENGTH.
Definition data.h:15
RTE_MARKER64 b_
Definition data.h:18
uint8_t digest[ImplicitDigestLength]
Definition data.h:17
PName name
Definition data.h:10
uint8_t helperScratch[192]
scratch area for helper threads
Definition data.h:19
Parsed Interest packet.
Definition interest.h:9
Parsed name.
Definition name.h:139
Mempools for packet modification.
Definition common.h:17
mbuf alignment requirements for encoding or packet modification.
Definition common.h:35