From f21204494064e28e9f0bb20f71a6071bead0d0e8 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Wed, 26 Oct 2022 17:55:53 +0200 Subject: icmp: Don't discard first reply sequence for a given echo ID In pasta mode, ICMP and ICMPv6 echo sockets relay back to us any reply we send: we're on the same host as the target, after all. We discard them by comparing the last sequence we sent with the sequence we receive. However, on the first reply for a given identifier, the sequence might be zero, depending on the implementation of ping(8): we need another value to indicate we haven't sent any sequence number, yet. Use -1 as initialiser in the echo identifier map. This is visible with Busybox's ping, and was reported by Paul on the integration at https://github.com/containers/podman/pull/16141, with: $ podman run --net=pasta alpine ping -c 2 192.168.188.1 ...where only the second reply would be routed back. Reported-by: Paul Holzinger Fixes: 33482d5bf293 ("passt: Add PASTA mode, major rework") Signed-off-by: Stefano Brivio Reviewed-by: David Gibson --- passt.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'passt.c') diff --git a/passt.c b/passt.c index ff4ee5d..34cd832 100644 --- a/passt.c +++ b/passt.c @@ -256,6 +256,9 @@ int main(int argc, char **argv) if ((!c.no_udp && udp_init(&c)) || (!c.no_tcp && tcp_init(&c))) exit(EXIT_FAILURE); + if (!c.no_icmp) + icmp_init(); + proto_update_l2_buf(c.mac_guest, c.mac, &c.ip4.addr); if (c.ifi4 && !c.no_dhcp) -- cgit v1.2.3