On Fri, Jun 19, 2026 at 12:30:06PM +0200, Laurent Vivier wrote: > Since 260075bde769 ("tcp, udp, fwd: Run all port scanning from a > single timer"), CALL_PROTO_HANDLER() is only used for TCP. UDP and > ICMP timers now run from flow_defer_handler(), making the timer_run > fields in struct udp_ctx and struct icmp_ctx dead stores. > > Remove the unused fields, drop struct icmp_ctx entirely (it has no > remaining members), and stop initialising them in timer_init(). > > Signed-off-by: Laurent Vivier Reviewed-by: David Gibson Nice catch. > --- > icmp.h | 7 ------- > passt.c | 2 +- > passt.h | 2 -- > udp.h | 2 -- > 4 files changed, 1 insertion(+), 12 deletions(-) > > diff --git a/icmp.h b/icmp.h > index e8b928b61370..556260461995 100644 > --- a/icmp.h > +++ b/icmp.h > @@ -19,12 +19,5 @@ int icmp_tap_handler(const struct ctx *c, uint8_t pif, sa_family_t af, > struct iov_tail *data, const struct timespec *now); > void icmp_init(void); > > -/** > - * struct icmp_ctx - Execution context for ICMP routines > - * @timer_run: Timestamp of most recent timer run > - */ > -struct icmp_ctx { > - struct timespec timer_run; > -}; > > #endif /* ICMP_H */ > diff --git a/passt.c b/passt.c > index b1d35d5bf988..677c8471a105 100644 > --- a/passt.c > +++ b/passt.c > @@ -141,7 +141,7 @@ static void random_init(struct ctx *c) > */ > static void timer_init(struct ctx *c, const struct timespec *now) > { > - c->tcp.timer_run = c->udp.timer_run = c->icmp.timer_run = *now; > + c->tcp.timer_run = *now; > } > > /** > diff --git a/passt.h b/passt.h > index 3a072945c382..205d7eecede7 100644 > --- a/passt.h > +++ b/passt.h > @@ -194,7 +194,6 @@ struct ip6_ctx { > * @no_udp: Disable UDP operation > * @udp: Context for UDP protocol handler > * @no_icmp: Disable ICMP operation > - * @icmp: Context for ICMP protocol handler > * @mtu: MTU passed via DHCP/NDP > * @no_dns: Do not source/use DNS servers for any purpose > * @no_dns_search: Do not source/use domain search lists for any purpose > @@ -279,7 +278,6 @@ struct ctx { > int no_udp; > struct udp_ctx udp; > int no_icmp; > - struct icmp_ctx icmp; > > int no_dns; > int no_dns_search; > diff --git a/udp.h b/udp.h > index 9ea7de682caf..b50283eab198 100644 > --- a/udp.h > +++ b/udp.h > @@ -26,14 +26,12 @@ void udp_update_l2_buf(const unsigned char *eth_d); > * struct udp_ctx - Execution context for UDP > * @scan_in: Port scanning state for inbound packets > * @scan_out: Port scanning state for outbound packets > - * @timer_run: Timestamp of most recent timer run > * @timeout: Timeout for unidirectional flows (in s) > * @stream_timeout: Timeout for stream-like flows (in s) > */ > struct udp_ctx { > struct fwd_scan scan_in; > struct fwd_scan scan_out; > - struct timespec timer_run; > int timeout; > int stream_timeout; > }; > -- > 2.54.0 > -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson