This brief document is meant to describe the operation of the crossfire metaserver, as well as the form of the data. The metaserver listens on port 13326 for both tcp and udp packets. The server sends updates to the metaserver via udp. The metaserver only does basic checking on the data that server sends. It trusts the server for the ip name it provides. The metaserver does add the ip address and also tracks the idle time (time since last packet received). The client gets its information from the metaserver through connecting by means of tcp. When the metaserver accepts the tcp connection, it dumps the metaserver information over the connection - there is no negotiation that needs to be done (and in fact, a telnet to port 13326 will show the dumped data). The current metaserver implementation is in Perl. But the metaserver could be in any language. Currently, perl is fast enough for the amount of data that is being exchanged. An example of a line from metaserver output: 165.227.59.56|330|tavern.santa-clara.ca.us|0|1.0.0|Development server - usually running CVS or even later experimental code. At end of DSL link (128k upload). May be restarted unexpectedly - play at your own risk.|3254|117133|1569 For input and output, all this data is on a single line. It is broken up here to be more readable. The first field (165.227.59.56) is the ip address that send this to the server. The metaserver adds this information. The second field (330) is the number of seconds since the metaserver last received and update from this server. The third fields and beyond are all data the server has sent to the metaserver. The third field (tavern.santa-clara.ca.us) is the hostname of the server. This is provided by the server itself - the metaserver does not look this up. Fourth field (0) is the number of players currently on the server. Fifth field (1.0.0) is the version of the server. Sixth field (Development server ....) is comment. It can contain most any character or data. For clarity reasons, this is not used in the unix clients, but is used on the web page output. This should not contain any vertical bars, as it will then confusion programs parsing the data. Seventh field (3254) is the number of bytes the server has taken in over the socket over the lifetime of that server instance. Eigth field (117133) is the number of bytes the server has written out on the socket over the lifetime of that server instance. Ninth field (1569) is the number of seconds this server instance has been up. When referring to server instance for the 7->9'th field, this means how long since the executable has been started. A particular host may have been running a server for quite a long time, but due to updates or crashes, the length of time the server instance has been up may be much shorter.