Quake 2 over IPv6

Quake2 now supports IPv6 on Linux, Windows and FreeBSD (probably other BSDs as well). Viagenie's patch is now included in Quake2 cvs files.

To compile IPv6, just edit the Makefile to have HAVE_IPV6=YES. The source code can be fetch from the anon-CVS described below.

  • Supports both IPv4 and IPv6 simultaneously (opens a socket for each AF)
  • Local servers are found through IPv6 multicast (used ff12::666 address for the server)
  • Server listing on client side includes the IP address

For Linux IPv6 users
Remove "-DHAVE_SIN6_LEN" from the Makefile. Not tested under USAGI.

For Windows IPv6 users (NT, 2000, XP)
net_udp6.c and a patch are available here. They are used to provide the functions of net_wins.c with added IPv6 support. Quake2 was compiled and tested using Visual C++ 6.0 and IPv6 Tech Preview. Your compiling environment must define the preprocessor variable HAVE_IPV6. Make sure you are using a recent SDK from Microsoft (ex: nov. 2000) in order to use the up-to-date IPv6 structure definitions.

Available binaries
quake2-ipv6-win32.zip
quake2-ipv6-freebsd45.tgz

Note: To have a fully functional game, you must have the necessary game files (WADs) from the original Quake2 CD. See steps below.


Compiling Quake 2 - IPv6 (tested on FreeBSD 4.5, Linux and Windows 2000)

# Fetch the latest Quake2 from CVS:
cvs -d :pserver:anonymous@cvs.icculus.org:/cvs/cvsroot login (anonymous)
cvs -d :pserver:anonymous@cvs.icculus.org:/cvs/cvsroot co quake2

cd quake2/

# Edit the Makefile: HAVE_IPV6=YES.

gmake

# Install game from quake2 gamedata from CD. (see README.r file in the source distribution). As an example, your install directory should look like this.

quake2 +set dedicated 1
    Runs server listening on both IPv4 and IPv6 sockets

quake2 +set dedicated 1 +set multicast <interface>
    IPv6 server joins quake2 multicast group ff12::666 (not functional on Windows yet.)

quake2 +set dedicated 1 +set ip <IPv6 address> +set multicast <interface>
    IPv6 server only. Listens on <IPv6 address>
     Examples of <IPv6 address>:
    3ffe:b00:c18::666              (global IPv6 address)
        fe80::202:b3ff:fe04:1234%fxp0  (link-local address. scope required)
        ::                             (unspecified, binds on all IPv6 addresses)

quake2 +set dedicated 1 +set ip <IPv4 address>
    IPv4 server only. Listens on <IPv4 address>
        0.0.0.0 can be used to bind on all IPv4 addresses


The same commands are used for the client (don't specify +set
dedicated 1). The +set multicast argument is necessary on the client side
to use IPv6 multicast.

Unix
<interface> is the interface name the game will send/receive multicast traffic on (ex: ed0, le0)

Windows
<interface> is the interface number the game will send/receive multicast traffic on (ex: 3)
Here is an example on finding what you should use for the interface number:
> ipv6 if
Interface 4 (site 1): 6-over-4 Virtual Interface
  uses Neighbor Discovery
  link-level address: 192.168.9.30
...

Interface 3 (site 1): Local Area Connection   <- This is the NIC, so we specify interface 3
  uses Neighbor Discovery
  link-level address: 00-bd-ae-c6-54-c4
    preferred address fe80::2bd:aeff:fec6:54c4, infinite/infinite
...

Interface 2 (site 0): Tunnel Pseudo-Interface
  does not use Neighbor Discovery
  link-level address: 0.0.0.0
...

Interface 1 (site 0): Loopback Pseudo-Interface
  does not use Neighbor Discovery
  link-level address:
    preferred address ::1, infinite/infinite
...

* The server used for this game is on CA*net3 network. *


Public Quake2-servers running over IPv6

  • Quake2.ipv6.viagenie.qc.ca (3ffe:b00:c18:1::b10d) -> Running at Viagénie
  • Write to Viagénie to add your server.


    Don't have IPv6 connectivity yet !!!!

    No problem with that !! Viagénie is providing IPv6 connectivity to any single host with dual stacks support (IPv4/IPv6) already connected to Internet IPv4 world. Reach Freenet6 at http://www.freenet6.net and got IPv6 connectivity in less than 2 minutes.


    Typical architecture to play at Quake-IPv6



    Comments or questions?
    Write at quake-v6@viagenie.qc.ca