1. IPv6 support See pull request #365 and https://github.com/PilzAdam/minetest/tree/ipv6-revised Needs testing on windows? 2. "listen" config setting This specifies a list of IP addresses or network interfaces to bind and listen on when starting a server. Examples: "0.0.0.0" means to listen on all IPv4 addresses (default). "::" means to listen on all IPv6 addresses. "0.0.0.0, ::" means a combination of the above. "eth0, wlan0, lo" means to listen on these 3 interfaces (but not eth1, for example) (This eliminates the need for the ipv6_server option.) Setting an interface name here works by reading the list of IP addresses of the interface when starting the server, and listening on all of them. This requires some ioctl magic on Linux and WSAIoctl on Windows (which are the only operating systems I can test, code to do this on BSD, Mac OS X and other systems would be welcome). Winsock: http://tangentsoft.net/wskfaq/examples/getifaces.html 3. Set proper source address. The server should use the address on which the initial packet of a connection was received as the source address in the packets it sends. Right now, if the destination is reachable via multiple interfaces or an interface with several IPs, the choice of the source address is left to the OS. In case this address is not the address the client connected to, it won't know what to do with the packets it receives and will time out while trying to connect. 4. In-process datagram pipe In singleplayer mode, localhost UDP sockets should not be used since they can be slow. Instead store datagrams in a buffer when sending. Read from the same buffer when reading on the other end.