aboutgitcodebugslistschat
path: root/udp.h
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2024-08-27 16:04:44 +1000
committerStefano Brivio <sbrivio@redhat.com>2024-08-27 09:04:25 +0200
commit620e19a1b48a80abddc657b4c17f5e4920f300ec (patch)
tree645e30edcdcc2adacb842da3a50b3965cd7ac8c5 /udp.h
parent418feb37ece9ad584ec8b167861bb21a2cc3c067 (diff)
downloadpasst-620e19a1b48a80abddc657b4c17f5e4920f300ec.tar
passt-620e19a1b48a80abddc657b4c17f5e4920f300ec.tar.gz
passt-620e19a1b48a80abddc657b4c17f5e4920f300ec.tar.bz2
passt-620e19a1b48a80abddc657b4c17f5e4920f300ec.tar.lz
passt-620e19a1b48a80abddc657b4c17f5e4920f300ec.tar.xz
passt-620e19a1b48a80abddc657b4c17f5e4920f300ec.tar.zst
passt-620e19a1b48a80abddc657b4c17f5e4920f300ec.zip
udp: Merge udp[46]_mh_recv arrays
We've already gotten rid of most of the IPv4/IPv6 specific data structures in udp.c by merging them with each other. One significant one remains: udp[46]_mh_recv. This was a bit awkward to remove because of a subtle interaction. We initialise the msg_namelen fields to represent the total size we have for a socket address, but when we receive into the arrays those are modified to the actual length of the sockaddr we received. That meant that naively merging the arrays meant that if we received IPv4 datagrams, then IPv6 datagrams, the addresses for the latter would be truncated. In this patch address that by resetting the received msg_namelen as soon as we've found a flow for the datagram. Finding the flow is the only thing that might use the actual sockaddr length, although we in fact don't need it for the time being. This also removes the last use of the 'v6' field from udp_listen_epoll_ref, so remove that as well. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'udp.h')
-rw-r--r--udp.h2
1 files changed, 0 insertions, 2 deletions
diff --git a/udp.h b/udp.h
index fb42e1c..a8e76bf 100644
--- a/udp.h
+++ b/udp.h
@@ -26,14 +26,12 @@ void udp_update_l2_buf(const unsigned char *eth_d, const unsigned char *eth_s);
* union udp_listen_epoll_ref - epoll reference for "listening" UDP sockets
* @port: Source port for connected sockets, bound port otherwise
* @pif: pif for this socket
- * @v6: Set for IPv6 sockets or connections
* @u32: Opaque u32 value of reference
*/
union udp_listen_epoll_ref {
struct {
in_port_t port;
uint8_t pif;
- bool v6:1;
};
uint32_t u32;
};