extern int gethostname (char *, int);
extern int close (int);
-extern cvar_t hostname;
-
static int net_acceptsocket = -1; // socket for fielding new connections
static int net_controlsocket;
static int net_broadcastsocket = 0;
// determine my name & address
gethostname(buff, MAXHOSTNAMELEN);
local = gethostbyname(buff);
- myAddr = *(int *)local->h_addr_list[0];
+ if (!local)
+ myAddr = htonl(INADDR_LOOPBACK); // default to the loopback address
+ else
+ myAddr = *(int *)local->h_addr_list[0];
// if the quake hostname isn't set, set it to the machine name
if (strcmp(hostname.string, "UNNAMED") == 0)
Sys_Error("UDP_Init: Unable to open control socket\n");
((struct sockaddr_in *)&broadcastaddr)->sin_family = AF_INET;
- ((struct sockaddr_in *)&broadcastaddr)->sin_addr.s_addr = INADDR_BROADCAST;
+ ((struct sockaddr_in *)&broadcastaddr)->sin_addr.s_addr = htonl(INADDR_BROADCAST);
((struct sockaddr_in *)&broadcastaddr)->sin_port = htons(net_hostport);
UDP_GetSocketAddr (net_controlsocket, &addr);
the local network components to fill in the rest
============
*/
-static int PartialIPAddress (char *in, struct qsockaddr *hostaddr)
+static int PartialIPAddress (const char *in, struct qsockaddr *hostaddr)
{
char buff[256];
char *b;
//=============================================================================
-int UDP_Read (int socket, byte *buf, int len, struct qsockaddr *addr)
+int UDP_Recv (qbyte *buf, int len, struct qsockaddr *addr)
+{
+ return UDP_Read (net_acceptsocket, buf, len, addr);
+}
+
+//=============================================================================
+
+int UDP_Send (qbyte *buf, int len, struct qsockaddr *addr)
+{
+ return UDP_Write (net_acceptsocket, buf, len, addr);
+}
+
+//=============================================================================
+
+int UDP_Read (int socket, qbyte *buf, int len, struct qsockaddr *addr)
{
int addrlen = sizeof (struct qsockaddr);
int ret;
//=============================================================================
-int UDP_Broadcast (int socket, byte *buf, int len)
+int UDP_Broadcast (int socket, qbyte *buf, int len)
{
int ret;
//=============================================================================
-int UDP_Write (int socket, byte *buf, int len, struct qsockaddr *addr)
+int UDP_Write (int socket, qbyte *buf, int len, struct qsockaddr *addr)
{
int ret;
//=============================================================================
-char *UDP_AddrToString (struct qsockaddr *addr)
+char *UDP_AddrToString (const struct qsockaddr *addr)
{
static char buffer[22];
int haddr;
//=============================================================================
-int UDP_StringToAddr (char *string, struct qsockaddr *addr)
+int UDP_StringToAddr (const char *string, struct qsockaddr *addr)
{
int ha1, ha2, ha3, ha4, hp;
int ipaddr;
//=============================================================================
-int UDP_GetNameFromAddr (struct qsockaddr *addr, char *name)
+int UDP_GetNameFromAddr (const struct qsockaddr *addr, char *name)
{
struct hostent *hostentry;
//=============================================================================
-int UDP_GetAddrFromName(char *name, struct qsockaddr *addr)
+int UDP_GetAddrFromName(const char *name, struct qsockaddr *addr)
{
struct hostent *hostentry;
//=============================================================================
-int UDP_AddrCompare (struct qsockaddr *addr1, struct qsockaddr *addr2)
+int UDP_AddrCompare (const struct qsockaddr *addr1, const struct qsockaddr *addr2)
{
if (addr1->sa_family != addr2->sa_family)
return -1;
return 0;
}
-//=============================================================================