diff options
| author | songyanchao <[email protected]> | 2023-04-03 13:00:03 +0000 |
|---|---|---|
| committer | songyanchao <[email protected]> | 2023-04-03 13:00:03 +0000 |
| commit | 48f8f83281d516b06e05dc037391f4317baf823a (patch) | |
| tree | f91e69ed722ed0d01413a60b9e10aed49f924355 /tools | |
| parent | 35012175d3db9e3ea7c1db9cfb9b69b18e2bf163 (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.c | 18 |
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)); |
