aboutgitcodebugslistschat
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2026-01-16 11:59:20 +1100
committerStefano Brivio <sbrivio@redhat.com>2026-01-18 12:47:50 +0100
commitacb7a3057bbc6af72399c44d747c1cf7fb92d17f (patch)
tree7996047e241cd8d26a09edf2b2c7ce988353a2cb
parentb223bec48213060304c09882ce5b3055b15b7e07 (diff)
downloadpasst-acb7a3057bbc6af72399c44d747c1cf7fb92d17f.tar
passt-acb7a3057bbc6af72399c44d747c1cf7fb92d17f.tar.gz
passt-acb7a3057bbc6af72399c44d747c1cf7fb92d17f.tar.bz2
passt-acb7a3057bbc6af72399c44d747c1cf7fb92d17f.tar.lz
passt-acb7a3057bbc6af72399c44d747c1cf7fb92d17f.tar.xz
passt-acb7a3057bbc6af72399c44d747c1cf7fb92d17f.tar.zst
passt-acb7a3057bbc6af72399c44d747c1cf7fb92d17f.zip
tcp, udp: Remove old auto-forwarding socket arrays
Now that we've moved listening socket management to the new forwarding table data structure, the existing arrays of socket fds are maintained, but never consulted. Remove them. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rw-r--r--conf.c1
-rw-r--r--tcp.c24
-rw-r--r--udp.c30
-rw-r--r--udp.h1
4 files changed, 0 insertions, 56 deletions
diff --git a/conf.c b/conf.c
index 0f283dc..ce6c012 100644
--- a/conf.c
+++ b/conf.c
@@ -2061,7 +2061,6 @@ void conf(struct ctx *c, int argc, char **argv)
* settings
*/
fwd_probe_ephemeral();
- udp_portmap_clear();
optind = 0;
do {
name = getopt_long(argc, argv, optstring, options, NULL);
diff --git a/tcp.c b/tcp.c
index fed90f9..a7fbff5 100644
--- a/tcp.c
+++ b/tcp.c
@@ -412,10 +412,6 @@ static const char *tcp_flag_str[] __attribute((__unused__)) = {
"ACK_FROM_TAP_DUE", "ACK_FROM_TAP_BLOCKS", "SYN_RETRIED",
};
-/* Listening sockets, used for automatic port forwarding in pasta mode only */
-static int tcp_sock_init_ext [NUM_PORTS][IP_VERSIONS];
-static int tcp_sock_ns [NUM_PORTS][IP_VERSIONS];
-
/* Table of our guest side addresses with very low RTT (assumed to be local to
* the host), LRU
*/
@@ -2688,8 +2684,6 @@ int tcp_listen(const struct ctx *c, uint8_t pif,
.port = port,
.pif = pif,
};
- const struct fwd_ports *fwd;
- int (*socks)[IP_VERSIONS];
int s;
ASSERT(!c->no_tcp);
@@ -2709,25 +2703,9 @@ int tcp_listen(const struct ctx *c, uint8_t pif,
return -EAFNOSUPPORT;
}
- if (pif == PIF_HOST) {
- fwd = &c->tcp.fwd_in;
- socks = tcp_sock_init_ext;
- } else {
- ASSERT(pif == PIF_SPLICE);
- fwd = &c->tcp.fwd_out;
- socks = tcp_sock_ns;
- }
-
s = pif_sock_l4(c, EPOLL_TYPE_TCP_LISTEN, pif, addr, ifname,
port, ref.u32);
- if (fwd->mode == FWD_AUTO) {
- if (!addr || inany_v4(addr))
- socks[port][V4] = s < 0 ? -1 : s;
- if (!addr || !inany_v4(addr))
- socks[port][V6] = s < 0 ? -1 : s;
- }
-
return s;
}
@@ -2869,8 +2847,6 @@ int tcp_init(struct ctx *c)
memset(init_sock_pool4, 0xff, sizeof(init_sock_pool4));
memset(init_sock_pool6, 0xff, sizeof(init_sock_pool6));
- memset(tcp_sock_init_ext, 0xff, sizeof(tcp_sock_init_ext));
- memset(tcp_sock_ns, 0xff, sizeof(tcp_sock_ns));
tcp_sock_refill_init(c);
diff --git a/udp.c b/udp.c
index a1ebd65..afb85df 100644
--- a/udp.c
+++ b/udp.c
@@ -124,10 +124,6 @@
- sizeof(struct udphdr) \
- sizeof(struct ipv6hdr))
-/* "Spliced" sockets indexed by bound port (host order) */
-static int udp_splice_ns [IP_VERSIONS][NUM_PORTS];
-static int udp_splice_init[IP_VERSIONS][NUM_PORTS];
-
/* Static buffers */
/* UDP header and data for inbound messages */
@@ -194,19 +190,6 @@ static struct mmsghdr udp_mh_splice [UDP_MAX_FRAMES];
static struct iovec udp_l2_iov [UDP_MAX_FRAMES][UDP_NUM_IOVS];
/**
- * udp_portmap_clear() - Clear UDP port map before configuration
- */
-void udp_portmap_clear(void)
-{
- unsigned i;
-
- for (i = 0; i < NUM_PORTS; i++) {
- udp_splice_ns[V4][i] = udp_splice_ns[V6][i] = -1;
- udp_splice_init[V4][i] = udp_splice_init[V6][i] = -1;
- }
-}
-
-/**
* udp_update_l2_buf() - Update L2 buffers with Ethernet and IPv4 addresses
* @eth_d: Ethernet destination address, NULL if unchanged
*/
@@ -1145,18 +1128,10 @@ int udp_listen(const struct ctx *c, uint8_t pif,
.pif = pif,
.port = port,
};
- int (*socks)[NUM_PORTS];
int s;
ASSERT(!c->no_udp);
- if (pif == PIF_HOST) {
- socks = udp_splice_init;
- } else {
- ASSERT(pif == PIF_SPLICE);
- socks = udp_splice_ns;
- }
-
if (!c->ifi4) {
if (!addr)
/* Restrict to v6 only */
@@ -1175,11 +1150,6 @@ int udp_listen(const struct ctx *c, uint8_t pif,
s = pif_sock_l4(c, EPOLL_TYPE_UDP_LISTEN, pif,
addr, ifname, port, ref.u32);
- if (!addr || inany_v4(addr))
- socks[V4][port] = s < 0 ? -1 : s;
- if (!addr || !inany_v4(addr))
- socks[V6][port] = s < 0 ? -1 : s;
-
return s;
}
diff --git a/udp.h b/udp.h
index 73efe03..3c6f90a 100644
--- a/udp.h
+++ b/udp.h
@@ -6,7 +6,6 @@
#ifndef UDP_H
#define UDP_H
-void udp_portmap_clear(void);
void udp_listen_sock_handler(const struct ctx *c, union epoll_ref ref,
uint32_t events, const struct timespec *now);
void udp_sock_handler(const struct ctx *c, union epoll_ref ref,