summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorsongyanchao <[email protected]>2023-04-03 13:00:03 +0000
committersongyanchao <[email protected]>2023-04-03 13:00:03 +0000
commit48f8f83281d516b06e05dc037391f4317baf823a (patch)
treef91e69ed722ed0d01413a60b9e10aed49f924355 /tools
parent35012175d3db9e3ea7c1db9cfb9b69b18e2bf163 (diff)
🐞 fix(DPISDN-5): 修复Classifier ipv4 数据包快速匹配无效,以及mrpdump处理2000字节以上大包异常问题。v4.6.21-20230403
修复Classifier ipv4 数据包快速匹配无效,以及mrpdump处理2000字节以上大包异常问题。
Diffstat (limited to 'tools')
-rw-r--r--tools/tcpdump/pdump.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/tools/tcpdump/pdump.c b/tools/tcpdump/pdump.c
index b3aad7d..7aae733 100644
--- a/tools/tcpdump/pdump.c
+++ b/tools/tcpdump/pdump.c
@@ -524,8 +524,8 @@ static unsigned int mbuf_burst_segs(struct rte_mbuf * pkts[], unsigned int n)
int mr_pcapng_set_opt(struct rte_mbuf * mbuf, uint16_t port_id, uint32_t flags)
{
/* pad the packet to 32 bit boundary */
- uint32_t data_len = rte_pktmbuf_data_len(mbuf);
- uint32_t padding = RTE_ALIGN(data_len, sizeof(uint32_t)) - data_len;
+ uint32_t original_length = rte_pktmbuf_pkt_len(mbuf);
+ uint32_t padding = RTE_ALIGN(original_length, sizeof(uint32_t)) - original_length;
if (padding > 0)
{
void * tail = rte_pktmbuf_append(mbuf, padding);
@@ -559,12 +559,12 @@ int mr_pcapng_set_opt(struct rte_mbuf * mbuf, uint16_t port_id, uint32_t flags)
len += snprintf(str_rx_tx + len, METADATA_MAX_SIZE - len, ", hash_usr:%u", mbuf->hash.usr);
len = snprintf(str_sid, METADATA_MAX_SIZE - len, "start_sid:%u", mrb_metadata->start_sid);
- len += snprintf(str_sid, METADATA_MAX_SIZE - len, ", nr_sid:%u", mrb_metadata->nr_sid);
- len += snprintf(str_sid, METADATA_MAX_SIZE - len, ", cur_sid:%u", mrb_metadata->cur_sid);
- len += snprintf(str_sid, METADATA_MAX_SIZE - len, ", sids:");
+ len += snprintf(str_sid + len, METADATA_MAX_SIZE - len, ", nr_sid:%u", mrb_metadata->nr_sid);
+ len += snprintf(str_sid + len, METADATA_MAX_SIZE - len, ", cur_sid:%u", mrb_metadata->cur_sid);
+ len += snprintf(str_sid + len, METADATA_MAX_SIZE - len, ", sids:");
for (int i = 0; i < RTE_DIM(mrb_metadata->sids); i++)
{
- len += snprintf(str_sid, METADATA_MAX_SIZE - len, "[%u],", mrb_metadata->sids[i]);
+ len += snprintf(str_sid + len, METADATA_MAX_SIZE - len, "[%u],", mrb_metadata->sids[i]);
}
len = snprintf(str_dir, METADATA_MAX_SIZE, "dir:%u", mrb_metadata->dir);
@@ -596,12 +596,12 @@ int mr_pcapng_set_opt(struct rte_mbuf * mbuf, uint16_t port_id, uint32_t flags)
clock_gettime(CLOCK_MONOTONIC, &ts);
uint64_t ns = (uint64_t)ts.tv_sec * 1000000000 + ts.tv_nsec;
epb->block_type = PCAPNG_ENHANCED_PACKET_BLOCK;
- epb->block_length = rte_pktmbuf_data_len(mbuf);
+ epb->block_length = rte_pktmbuf_pkt_len(mbuf);
epb->interface_id = port_index[port_id];
epb->timestamp_hi = ns >> 32;
epb->timestamp_lo = (uint32_t)ns;
- epb->capture_length = data_len;
- epb->original_length = data_len;
+ epb->capture_length = original_length;
+ epb->original_length = original_length;
/* set trailer of block length */
struct pcapng_option * opt_new = pcapng_add_option(opt, PCAPNG_OPT_COMMENT, str_rx_tx, strlen(str_rx_tx));