This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
*/
// net.h -- quake's interface to the networking layer
+#ifndef NET_H
+#define NET_H
+
struct qsockaddr
{
short sa_family;
#define NET_NAMELEN 64
-#define NET_MAXMESSAGE 8192
+#define NET_MAXMESSAGE (MAX_DATAGRAM + 64)
#define NET_HEADERSIZE (2 * sizeof(unsigned int))
#define NET_DATAGRAMSIZE (MAX_DATAGRAM + NET_HEADERSIZE)
qboolean disconnected;
qboolean canSend;
qboolean sendNext;
-
+
int driver;
int landriver;
int socket;
unsigned int sendSequence;
unsigned int unreliableSendSequence;
int sendMessageLength;
- byte sendMessage [NET_MAXMESSAGE];
+ qbyte sendMessage [NET_MAXMESSAGE];
unsigned int receiveSequence;
unsigned int unreliableReceiveSequence;
int receiveMessageLength;
- byte receiveMessage [NET_MAXMESSAGE];
+ qbyte receiveMessage [NET_MAXMESSAGE];
struct qsockaddr addr;
char address[NET_NAMELEN];
-
} qsocket_t;
extern qsocket_t *net_activeSockets;
-extern qsocket_t *net_freeSockets;
-extern int net_numsockets;
+extern mempool_t *net_mempool;
typedef struct
{
int (*CloseSocket) (int socket);
int (*Connect) (int socket, struct qsockaddr *addr);
int (*CheckNewConnections) (void);
- int (*Read) (int socket, byte *buf, int len, struct qsockaddr *addr);
- int (*Write) (int socket, byte *buf, int len, struct qsockaddr *addr);
- int (*Broadcast) (int socket, byte *buf, int len);
- char * (*AddrToString) (struct qsockaddr *addr);
- int (*StringToAddr) (char *string, struct qsockaddr *addr);
+ int (*Recv) (qbyte *buf, int len, struct qsockaddr *addr);
+ int (*Send) (qbyte *buf, int len, struct qsockaddr *addr);
+ int (*Read) (int socket, qbyte *buf, int len, struct qsockaddr *addr);
+ int (*Write) (int socket, qbyte *buf, int len, struct qsockaddr *addr);
+ int (*Broadcast) (int socket, qbyte *buf, int len);
+ char * (*AddrToString) (const struct qsockaddr *addr);
+ int (*StringToAddr) (const char *string, struct qsockaddr *addr);
int (*GetSocketAddr) (int socket, struct qsockaddr *addr);
- int (*GetNameFromAddr) (struct qsockaddr *addr, char *name);
- int (*GetAddrFromName) (char *name, struct qsockaddr *addr);
- int (*AddrCompare) (struct qsockaddr *addr1, struct qsockaddr *addr2);
+ int (*GetNameFromAddr) (const struct qsockaddr *addr, char *name);
+ int (*GetAddrFromName) (const char *name, struct qsockaddr *addr);
+ int (*AddrCompare) (const struct qsockaddr *addr1, const struct qsockaddr *addr2);
int (*GetSocketPort) (struct qsockaddr *addr);
int (*SetSocketPort) (struct qsockaddr *addr, int port);
} net_landriver_t;
int (*Init) (void);
void (*Listen) (qboolean state);
void (*SearchForHosts) (qboolean xmit);
- qsocket_t *(*Connect) (char *host);
+ qboolean (*SearchForInetHosts) (const char *master);
+ qsocket_t *(*Connect) (const char *host);
qsocket_t *(*CheckNewConnections) (void);
int (*QGetMessage) (qsocket_t *sock);
int (*QSendMessage) (qsocket_t *sock, sizebuf_t *data);
qboolean (*CanSendUnreliableMessage) (qsocket_t *sock);
void (*Close) (qsocket_t *sock);
void (*Shutdown) (void);
+ void (*Heartbeat) (const char *host);
int controlSock;
} net_driver_t;
extern int net_driverlevel;
extern cvar_t hostname;
+extern cvar_t developer_networking;
extern char playername[];
extern int playercolor;
double SetNetTime(void);
-#define HOSTCACHESIZE 8
+#define HOSTCACHESIZE 128
typedef struct
{
- char name[16];
- char map[16];
- char cname[32];
+ char name[64];
+ char map[64];
+ char cname[64];
int users;
int maxusers;
- int driver;
- int ldriver;
- struct qsockaddr addr;
+ //int driver;
+ //int ldriver;
+ //struct qsockaddr addr;
} hostcache_t;
extern int hostCacheCount;
#endif
#endif
-#ifdef IDGODS
-qboolean IsID(struct qsockaddr *addr);
-#endif
-
//============================================================================
//
// public network functions
struct qsocket_s *NET_Connect (char *host);
// called by client to connect to a host. Returns -1 if not able to
+void NET_Heartbeat (int priority);
+// Send an heartbeat to the master server(s). priority: 0 = lowest, 1 = state change, 2 = force
+
qboolean NET_CanSendMessage (qsocket_t *sock);
// Returns true or false if the given qsocket can currently accept a
// message to be transmitted.
void SchedulePollProcedure(PollProcedure *pp, double timeOffset);
-extern qboolean serialAvailable;
extern qboolean ipxAvailable;
extern qboolean tcpipAvailable;
extern char my_ipx_address[NET_NAMELEN];
extern char my_tcpip_address[NET_NAMELEN];
-extern void (*GetComPortConfig) (int portNumber, int *port, int *irq, int *baud, qboolean *useModem);
-extern void (*SetComPortConfig) (int portNumber, int port, int irq, int baud, qboolean useModem);
-extern void (*GetModemConfig) (int portNumber, char *dialType, char *clear, char *init, char *hangup);
-extern void (*SetModemConfig) (int portNumber, char *dialType, char *clear, char *init, char *hangup);
extern qboolean slistInProgress;
extern qboolean slistSilent;
extern qboolean slistLocal;
void NET_Slist_f (void);
+void NET_InetSlist_f (void);
+
+#endif
+