udp: Don't attempt to translate a 0.0.0.0 source address
If an incoming packet has a source address of 0.0.0.0 we translate that to the gateway address. This doesn't really make sense, because we have no way to do a reverse translation for reply packets. Certain UDP protocols do use an unspecified source address in some circumstances (e.g. DHCP). These generally either require no reply, a multicast reply, or provide a suitable reply address by other means. In none of those cases does translating it in passt/pasta make sense. The best we can really do here is just leave it as is. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
bee61dd7d0
commit
720d777a69
1 changed files with 0 additions and 1 deletions
1
udp.c
1
udp.c
|
@ -599,7 +599,6 @@ static size_t udp_update_hdr4(const struct ctx *c, int n, in_port_t dstport,
|
||||||
src_port == 53) {
|
src_port == 53) {
|
||||||
b->iph.saddr = c->ip4.dns_match.s_addr;
|
b->iph.saddr = c->ip4.dns_match.s_addr;
|
||||||
} else if (IN4_IS_ADDR_LOOPBACK(&b->s_in.sin_addr) ||
|
} else if (IN4_IS_ADDR_LOOPBACK(&b->s_in.sin_addr) ||
|
||||||
IN4_IS_ADDR_UNSPECIFIED(&b->s_in.sin_addr)||
|
|
||||||
IN4_ARE_ADDR_EQUAL(&b->s_in.sin_addr, &c->ip4.addr_seen)) {
|
IN4_ARE_ADDR_EQUAL(&b->s_in.sin_addr, &c->ip4.addr_seen)) {
|
||||||
b->iph.saddr = c->ip4.gw.s_addr;
|
b->iph.saddr = c->ip4.gw.s_addr;
|
||||||
udp_tap_map[V4][src_port].ts = now->tv_sec;
|
udp_tap_map[V4][src_port].ts = now->tv_sec;
|
||||||
|
|
Loading…
Reference in a new issue