Hi,
I'm seeing DNS requests being dropped when using pasta 20250217. As far as I can tell, UDP
flows where the source port chosen in the namespace is already in use in the
init namespace get dropped.
All three fwd_nat_from_*() preserve the source port for UDP:
tgt->oport = 0;
if (proto == IPPROTO_UDP)
/* But for UDP preserve the source port */
tgt->oport = ini->eport;
That forces a bind() to it, and udp_flow_sock() treats bind failure as fatal, so
the flow is cancelled and the datagram dropped with no error to the sender.
I don't think I ever hit this with slirp4netns, it looks like libslirp's udp_attach() never
binds a port, so the kernel just gives it a random free port.
I'm not sure whether this is intended, but if it is, is there any way to work
around it?
Thanks