The branch stable/13 has been updated by vmaffione:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=21848f12be8b0375908ef577139922046f462d5d

commit 21848f12be8b0375908ef577139922046f462d5d
Author:     Vincenzo Maffione <vmaffi...@freebsd.org>
AuthorDate: 2022-08-24 08:20:57 +0000
Commit:     Vincenzo Maffione <vmaffi...@freebsd.org>
CommitDate: 2022-09-06 20:13:50 +0000

    pkt-gen: flip IPv4 address in ping-pong mode
    
    (cherry picked from commit 9a7abd932727dbf593cda85b18de87855b2e7e06)
---
 tools/tools/netmap/pkt-gen.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/tools/tools/netmap/pkt-gen.c b/tools/tools/netmap/pkt-gen.c
index ebc0ac977219..f62ed781061b 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++;

Reply via email to