IPv6 Support¶
MafiaNet supports IPv6 networking alongside IPv4. This guide covers enabling, configuring, and using IPv6 connections.
Enabling IPv6¶
IPv6 must be enabled at compile time:
// In RakNetDefinesOverrides.h
#define RAKNET_SUPPORT_IPV6 1
Then rebuild the library.
Basic Usage¶
Dual-stack server (IPv4 + IPv6):
MafiaNet::RakPeerInterface* peer = MafiaNet::RakPeerInterface::GetInstance();
// Create socket descriptors for both protocols
MafiaNet::SocketDescriptor sockets[2];
// IPv4 socket
sockets[0].port = 60000;
sockets[0].socketFamily = AF_INET;
// IPv6 socket
sockets[1].port = 60000;
sockets[1].socketFamily = AF_INET6;
// Start with both sockets
peer->Startup(100, sockets, 2);
peer->SetMaximumIncomingConnections(100);
IPv6-only server:
MafiaNet::SocketDescriptor sd;
sd.port = 60000;
sd.socketFamily = AF_INET6;
peer->Startup(100, &sd, 1);
Connecting to IPv6 address:
// Connect using IPv6 address
peer->Connect("2001:db8::1", 60000, nullptr, 0);
// Connect using hostname (resolves to IPv4 or IPv6)
peer->Connect("game.example.com", 60000, nullptr, 0);
Checking address type:
MafiaNet::SystemAddress addr = packet->systemAddress;
if (addr.IsIPv6()) {
char ip[INET6_ADDRSTRLEN];
addr.ToString(false, ip);
printf("IPv6 client: %s\n", ip);
} else {
printf("IPv4 client: %s\n", addr.ToString(false));
}
Key Considerations¶
Dual-stack: Most modern systems support dual-stack networking
Firewall: Ensure IPv6 ports are open in firewall rules
NAT: IPv6 typically doesn’t require NAT (but may use NAT64)
DNS: Use hostnames when possible for automatic protocol selection
Address Formats¶
Valid IPv6 address formats:
Full:
2001:0db8:0000:0000:0000:0000:0000:0001Compressed:
2001:db8::1IPv4-mapped:
::ffff:192.168.1.1Link-local:
fe80::1%eth0
Configuration Options¶
// Socket descriptor options
SocketDescriptor sd;
sd.socketFamily = AF_INET6; // IPv6 only
sd.socketFamily = AF_INET; // IPv4 only
sd.socketFamily = AF_UNSPEC; // System default
// Bind to specific interface
strcpy(sd.hostAddress, "2001:db8::1");
See Also¶
Preprocessor Directives - Build configuration
NAT Traversal Architecture - NAT with IPv6
Debugging Disconnects - Connection issues