diff options
| author | David Gibson <david@gibson.dropbear.id.au> | 2025-04-17 11:55:43 +1000 |
|---|---|---|
| committer | Stefano Brivio <sbrivio@redhat.com> | 2025-04-22 12:42:05 +0200 |
| commit | 436afc30447c6f0ce516f2b38c769833114bb5f8 (patch) | |
| tree | 6cd652f49c7516583598f8051d8f8b6b570b02e1 /doc | |
| parent | 08e617ec2ba916d8250a41d3ac68183124a6ec3e (diff) | |
| download | passt-436afc30447c6f0ce516f2b38c769833114bb5f8.tar passt-436afc30447c6f0ce516f2b38c769833114bb5f8.tar.gz passt-436afc30447c6f0ce516f2b38c769833114bb5f8.tar.bz2 passt-436afc30447c6f0ce516f2b38c769833114bb5f8.tar.lz passt-436afc30447c6f0ce516f2b38c769833114bb5f8.tar.xz passt-436afc30447c6f0ce516f2b38c769833114bb5f8.tar.zst passt-436afc30447c6f0ce516f2b38c769833114bb5f8.zip | |
udp: Translate offender addresses for ICMP messages
We've recently added support for propagating ICMP errors related to a UDP
flow from the host to the guest, by handling the extended UDP error on the
socket and synthesizing a suitable ICMP on the tap interface.
Currently we create that ICMP with a source address of the "offender" from
the extended error information - the source of the ICMP error received on
the host. However, we don't translate this address for cases where we NAT
between host and guest. This means (amongst other things) that we won't
get a "Connection refused" error as expected if send data from the guest to
the --map-host-loopback address. The error comes from 127.0.0.1 on the
host, which doesn't make sense on the tap interface and will be discarded
by the guest.
Because ICMP errors can be sent by an intermediate host, not just by the
endpoints of the flow, we can't handle this translation purely with the
information in the flow table entry. We need to explicitly translate this
address by our NAT rules, which we can do with the nat_inbound() helper.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'doc')
0 files changed, 0 insertions, 0 deletions
