aboutgitcodebugslistschat
path: root/udp.c
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 /udp.c
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>
Diffstat (limited to 'udp.c')
-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);
}