diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2024-07-05 20:44:05 +1000 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2024-07-05 15:26:37 +0200 |
commit | c6c61a9e1a99b116abda75659427c2edbbd86a0a (patch) | |
tree | 6c0242fff957c2268e73a915692dc222eaa22f31 | |
parent | 55aff45bc10354427f77fc7e9bebb71c3a156bcb (diff) | |
download | passt-c6c61a9e1a99b116abda75659427c2edbbd86a0a.tar passt-c6c61a9e1a99b116abda75659427c2edbbd86a0a.tar.gz passt-c6c61a9e1a99b116abda75659427c2edbbd86a0a.tar.bz2 passt-c6c61a9e1a99b116abda75659427c2edbbd86a0a.tar.lz passt-c6c61a9e1a99b116abda75659427c2edbbd86a0a.tar.xz passt-c6c61a9e1a99b116abda75659427c2edbbd86a0a.tar.zst passt-c6c61a9e1a99b116abda75659427c2edbbd86a0a.zip |
udp: Don't repeatedly initialise udp[46]_eth_hdr
Since we split our packet frame buffers into different pieces, we have
a single buffer per IP version for the ethernet header, rather than one
per frame. This makes sense since our ethernet header is alwaus the same.
However we initialise those buffers udp[46]_eth_hdr inside a per frame
loop. Pull that outside the loop so we just initialise them once.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rw-r--r-- | udp.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -314,8 +314,6 @@ static void udp_iov_init_one(const struct ctx *c, size_t i) }; *siov = IOV_OF_LVALUE(payload->data); - udp4_eth_hdr.h_proto = htons_constant(ETH_P_IP); - udp6_eth_hdr.h_proto = htons_constant(ETH_P_IPV6); tiov[UDP_IOV_TAP] = tap_hdr_iov(c, &meta->taph); tiov[UDP_IOV_PAYLOAD].iov_base = payload; @@ -351,6 +349,9 @@ static void udp_iov_init(const struct ctx *c) { size_t i; + udp4_eth_hdr.h_proto = htons_constant(ETH_P_IP); + udp6_eth_hdr.h_proto = htons_constant(ETH_P_IPV6); + for (i = 0; i < UDP_MAX_FRAMES; i++) udp_iov_init_one(c, i); } |