Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IPv6 support #9

Open
dsalt opened this issue Jun 30, 2013 · 2 comments
Open

IPv6 support #9

dsalt opened this issue Jun 30, 2013 · 2 comments
Assignees

Comments

@dsalt
Copy link

dsalt commented Jun 30, 2013

The servers (both game and master) on unvanquished.net also listen on IPv6. Would be nice to have apelsin handle that.

@Cadynum
Copy link
Owner

Cadynum commented Jul 4, 2013

How does the IPv6 support work:

  • Does the server simply listen on two sockets and tell two master servers?
  • If a client and server supports both v4 and v6, which should be preferred?
  • Is a server uniquely identified by the port number?
  • Is it possible, from just getting the two master responses, to somehow avoid sending the same server two requests, thus wasting bandwidth?

(Unfortunately my current ISP does not have have v6 support)

@ghost ghost assigned Cadynum Jul 4, 2013
@dsalt
Copy link
Author

dsalt commented Jul 4, 2013

  • The server connects separately over IPv4 and IPv6 to the master server. Consequently, the master server (if it's listening for both types) will see two game servers where there's really one. (We need to fix this.)
  • Which should be preferred depends on various factors: ping time, for one.
  • Servers are identified by the combination of IP address and port number.
  • Maybe. You could make inferences about 6to4 addresses and usually be right.

getserversExt UNVANQUISHED protocol [ipv4|ipv6] [full] [empty]

You'll see one or more getserversExtResponse packets which contain the following, in this order:

  • NUL
  • Packet no. (as string)
  • NUL
  • Packet count (as string)
  • NUL
  • Label information (number and text, for all servers in this packet), terminated by \ or / according to following content
  • 0 or more server addresses, each being one of the following:
    • IPv4 address – \, address, port (network byte order); or
    • IPv6 address – /, address, port (network byte order)
  • Terminating \

For testing, you can run a local master server (ours supports IPv6) or – and this works well with static IP – set up 6to4 (or equivalent).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants