#include <stdio.h>	/* for NULL	*/
#include <time.h>       /* for time_t   */
#include <socket.h>     /* for sockaddr */

#define MAXSERVERS 200
#define MAXPLAYERS 32
#define MAXBUFFER  500

struct server
{
    char *buffer;       	/* pointer to packet buffer             */
    char bogus;         	/* whether entry is considered bogus    */
    unsigned int length;      	/* byte length of buffer                */
    time_t received;    	/* date time packet received            */
    struct sockaddr source;     /* ip address of packet source          */
    
    /* pointers within packet buffer to server items */
    struct
    {
        char *address, *type, *port, *players, *free, *tmode, *comment;
    } server;
    
    /* pointers within packet buffer to player items */
    struct
    {
        char *slot, *team, *class, *rank, *name, *login;
    } player[MAXPLAYERS];
};

int svr_initialise();
struct server *svr_find(struct server *server);
void svr_update(struct server *server);
int svr_traverse
(
    int ((*compar)(const struct server *, const struct server *)),
    int ((*action)(const struct server *))
);
int svr_save();
int svr_load();
