aboutsummaryrefslogtreecommitdiff
path: root/tools/tools/netmap
diff options
context:
space:
mode:
authorVincenzo Maffione <vmaffione@FreeBSD.org>2022-08-24 08:20:57 +0000
committerVincenzo Maffione <vmaffione@FreeBSD.org>2022-08-24 08:20:57 +0000
commit9a7abd932727dbf593cda85b18de87855b2e7e06 (patch)
treed28e24d63ee0360956f57447df9a3f3239d56e79 /tools/tools/netmap
parent345bfec1090571ea219263c99eed29de27e143c8 (diff)
downloadsrc-9a7abd932727dbf593cda85b18de87855b2e7e06.tar.gz
src-9a7abd932727dbf593cda85b18de87855b2e7e06.zip
pkt-gen: flip IPv4 address in ping-pong mode
MFC after: 7 days
Diffstat (limited to 'tools/tools/netmap')
-rw-r--r--tools/tools/netmap/pkt-gen.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/tools/tools/netmap/pkt-gen.c b/tools/tools/netmap/pkt-gen.c
index f43469cf7ad6..7ae4d60f8813 100644
--- a/tools/tools/netmap/pkt-gen.c
+++ b/tools/tools/netmap/pkt-gen.c
@@ -1322,6 +1322,10 @@ ping_body(void *data)
return NULL;
}
+ if (targ->g->af == AF_INET6) {
+ D("Warning: ping-pong with IPv6 not supported");
+ }
+
bzero(&buckets, sizeof(buckets));
clock_gettime(CLOCK_REALTIME_PRECISE, &last_print);
now = last_print;
@@ -1504,6 +1508,11 @@ pong_body(void *data)
if (n > 0)
D("understood ponger %llu but don't know how to do it",
(unsigned long long)n);
+
+ if (targ->g->af == AF_INET6) {
+ D("Warning: ping-pong with IPv6 not supported");
+ }
+
while (!targ->cancel && (n == 0 || sent < n)) {
uint32_t txhead, txavail;
//#define BUSYWAIT
@@ -1547,7 +1556,15 @@ pong_body(void *data)
dpkt[3] = spkt[0];
dpkt[4] = spkt[1];
dpkt[5] = spkt[2];
+ /* swap source and destination IPv4 */
+ if (spkt[6] == htons(ETHERTYPE_IP)) {
+ dpkt[13] = spkt[15];
+ dpkt[14] = spkt[16];
+ dpkt[15] = spkt[13];
+ dpkt[16] = spkt[14];
+ }
txring->slot[txhead].len = slot->len;
+ //dump_payload(dst, slot->len, txring, txhead);
txhead = nm_ring_next(txring, txhead);
txavail--;
sent++;