aboutgitcodebugslistschat
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2024-07-05 20:44:05 +1000
committerStefano Brivio <sbrivio@redhat.com>2024-07-05 15:26:37 +0200
commitc6c61a9e1a99b116abda75659427c2edbbd86a0a (patch)
tree6c0242fff957c2268e73a915692dc222eaa22f31
parent55aff45bc10354427f77fc7e9bebb71c3a156bcb (diff)
downloadpasst-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.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/udp.c b/udp.c
index 8729dea..2d40337 100644
--- a/udp.c
+++ b/udp.c
@@ -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);
}