I didn't really dig through the code that much, but it looks like all of the sockets are bound using INADDR_ANY which should listen on all interfaces. Packets sent on a socket bound with INADDR_ANY usually go through the lowest numbered interface, so if that's not the same address you're expecting to receive on the NAT could be screwing it up. That's why I recommended disabling one of the cards to test if that works.
I'd also recommend setting up static addresses in your router so you don't need to change your config every time a DHCP address changes.
|