mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Add support for IPv6
Two new configuration options are added: - "enable_ipv6" to enable/disable the overall use of IPv6 - "ipv6_server" to enable/disable the use of IPv6 sockets when running a server (when "enable_ipv6" is enabled)
This commit is contained in:
parent
309c5f3641
commit
f960c3be31
16 changed files with 475 additions and 209 deletions
70
src/test.cpp
70
src/test.cpp
|
@ -1293,26 +1293,56 @@ struct TestSocket: public TestBase
|
|||
void Run()
|
||||
{
|
||||
const int port = 30003;
|
||||
UDPSocket socket;
|
||||
socket.Bind(port);
|
||||
|
||||
const char sendbuffer[] = "hello world!";
|
||||
socket.Send(Address(127,0,0,1,port), sendbuffer, sizeof(sendbuffer));
|
||||
|
||||
sleep_ms(50);
|
||||
|
||||
char rcvbuffer[256];
|
||||
memset(rcvbuffer, 0, sizeof(rcvbuffer));
|
||||
Address sender;
|
||||
for(;;)
|
||||
// IPv6 socket test
|
||||
{
|
||||
int bytes_read = socket.Receive(sender, rcvbuffer, sizeof(rcvbuffer));
|
||||
if(bytes_read < 0)
|
||||
break;
|
||||
UDPSocket socket6(true);
|
||||
socket6.Bind(port);
|
||||
|
||||
const char sendbuffer[] = "hello world!";
|
||||
IPv6AddressBytes bytes;
|
||||
bytes.bytes[15] = 1;
|
||||
socket6.Send(Address(&bytes, port), sendbuffer, sizeof(sendbuffer));
|
||||
|
||||
sleep_ms(50);
|
||||
|
||||
char rcvbuffer[256];
|
||||
memset(rcvbuffer, 0, sizeof(rcvbuffer));
|
||||
Address sender;
|
||||
for(;;)
|
||||
{
|
||||
int bytes_read = socket6.Receive(sender, rcvbuffer, sizeof(rcvbuffer));
|
||||
if(bytes_read < 0)
|
||||
break;
|
||||
}
|
||||
//FIXME: This fails on some systems
|
||||
UASSERT(strncmp(sendbuffer, rcvbuffer, sizeof(sendbuffer))==0);
|
||||
UASSERT(memcmp(sender.getAddress6().sin6_addr.s6_addr, Address(&bytes, 0).getAddress6().sin6_addr.s6_addr, 16) == 0);
|
||||
}
|
||||
|
||||
// IPv4 socket test
|
||||
{
|
||||
UDPSocket socket(false);
|
||||
socket.Bind(port);
|
||||
|
||||
const char sendbuffer[] = "hello world!";
|
||||
socket.Send(Address(127,0,0,1,port), sendbuffer, sizeof(sendbuffer));
|
||||
|
||||
sleep_ms(50);
|
||||
|
||||
char rcvbuffer[256];
|
||||
memset(rcvbuffer, 0, sizeof(rcvbuffer));
|
||||
Address sender;
|
||||
for(;;)
|
||||
{
|
||||
int bytes_read = socket.Receive(sender, rcvbuffer, sizeof(rcvbuffer));
|
||||
if(bytes_read < 0)
|
||||
break;
|
||||
}
|
||||
//FIXME: This fails on some systems
|
||||
UASSERT(strncmp(sendbuffer, rcvbuffer, sizeof(sendbuffer))==0);
|
||||
UASSERT(sender.getAddress().sin_addr.s_addr == Address(127,0,0,1, 0).getAddress().sin_addr.s_addr);
|
||||
}
|
||||
//FIXME: This fails on some systems
|
||||
UASSERT(strncmp(sendbuffer, rcvbuffer, sizeof(sendbuffer))==0);
|
||||
UASSERT(sender.getAddress() == Address(127,0,0,1, 0).getAddress());
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1412,12 +1442,12 @@ struct TestConnection: public TestBase
|
|||
Handler hand_client("client");
|
||||
|
||||
infostream<<"** Creating server Connection"<<std::endl;
|
||||
con::Connection server(proto_id, 512, 5.0, &hand_server);
|
||||
con::Connection server(proto_id, 512, 5.0, false, &hand_server);
|
||||
server.Serve(30001);
|
||||
|
||||
infostream<<"** Creating client Connection"<<std::endl;
|
||||
con::Connection client(proto_id, 512, 5.0, &hand_client);
|
||||
|
||||
con::Connection client(proto_id, 512, 5.0, false, &hand_client);
|
||||
|
||||
UASSERT(hand_server.count == 0);
|
||||
UASSERT(hand_client.count == 0);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue