From 8ea0dd0ec181372663ee0bb78dbd1d8bce4b347a Mon Sep 17 00:00:00 2001 From: Bradley Bell Date: Thu, 29 Aug 2002 09:02:05 +0000 Subject: [PATCH] fixed networking fuck-up? --- arch/linux/ipx_kali.c | 70 ++++++++++++++++++------------------------- include/ipx.h | 14 +++------ 2 files changed, 33 insertions(+), 51 deletions(-) diff --git a/arch/linux/ipx_kali.c b/arch/linux/ipx_kali.c index 34f0d72c..47eb3825 100644 --- a/arch/linux/ipx_kali.c +++ b/arch/linux/ipx_kali.c @@ -1,16 +1,9 @@ +/* $Id: ipx_kali.c,v 1.4 2002-08-29 08:59:43 btb Exp $ */ + /* - * $Source: /cvs/cvsroot/d2x/arch/linux/ipx_kali.c,v $ - * $Revision: 1.3 $ - * $Author: bradleyb $ - * $Date: 2001-10-19 07:39:26 $ * * IPX driver for KaliNix interface * - * $Log: not supported by cvs2svn $ - * Revision 1.2 2001/10/19 07:29:36 bradleyb - * Brought linux networking in line with d1x, moved some arch/linux_* stuff to arch/linux/ - * - * */ #ifdef HAVE_CONFIG_H @@ -23,11 +16,11 @@ #include "ipx_drv.h" #include "ukali.h" -static ipx_socket_t mysock; +extern unsigned char ipx_MyAddress[10]; static int open_sockets = 0; static int dynamic_socket = 0x401; -//static int last_socket = 0; +static int last_socket = 0; int have_empty_address() { int i; @@ -35,7 +28,8 @@ int have_empty_address() { return i == 10; } -int ipx_kali_GetMyAddress(void) { +int ipx_kali_GetMyAddress(void) +{ kaliaddr_ipx mKaliAddr; @@ -51,7 +45,8 @@ int ipx_kali_GetMyAddress(void) { return 0; } -int ipx_kali_OpenSocket(int port) { +int ipx_kali_OpenSocket(ipx_socket_t *sk, int port) +{ printf("IPX_kali: OpenSocket on port(%d)\n", port); if (!open_sockets) { @@ -65,54 +60,56 @@ int ipx_kali_OpenSocket(int port) { if (!port) port = dynamic_socket++; - if ((mysock.fd = KaliOpenSocket(htons(port))) < 0) { + if ((sk->fd = KaliOpenSocket(htons(port))) < 0) { printf("IPX_kali: OpenSocket Failed on port(%d)\n", port); - mysock.fd = -1; + sk->fd = -1; return -1; } open_sockets++; -// last_socket = port; - mysock.socket = port; + last_socket = port; + sk->socket = port; return 0; } -void ipx_kali_CloseSocket(void) { +void ipx_kali_CloseSocket(ipx_socket_t *mysock) +{ if (!open_sockets) { printf("IPX_kali: close w/o open\n"); return; } - printf("IPX_kali: CloseSocket on port(%d)\n", mysock.socket); - KaliCloseSocket(mysock.fd); + printf("IPX_kali: CloseSocket on port(%d)\n", mysock->socket); + KaliCloseSocket(mysock->fd); if (--open_sockets) { printf("IPX_kali: (closesocket) %d sockets left\n", open_sockets); return; } } -int ipx_kali_SendPacket(IPXPacket_t *IPXHeader, - u_char *data, int dataLen) { +int ipx_kali_SendPacket(ipx_socket_t *mysock, IPXPacket_t *IPXHeader, + u_char *data, int dataLen) +{ kaliaddr_ipx toaddr; int i; - + memcpy(toaddr.sa_nodenum, IPXHeader->Destination.Node, sizeof(toaddr.sa_nodenum)); -// memcpy(&toaddr.sa_socket, IPXHeader->Destination.Socket, sizeof(toaddr.sa_socket)); - toaddr.sa_socket=htons(mysock.socket); + memcpy(&toaddr.sa_socket, IPXHeader->Destination.Socket, sizeof(toaddr.sa_socket)); - if ((i = KaliSendPacket(mysock.fd, (char *)data, dataLen, &toaddr)) < 0) + if ((i = KaliSendPacket(mysock->fd, (char *)data, dataLen, &toaddr)) < 0) return -1; return i; } -int ipx_kali_ReceivePacket(char *outbuf, int outbufsize, - struct ipx_recv_data *rd) { +int ipx_kali_ReceivePacket(ipx_socket_t *s, char *outbuf, int outbufsize, + struct ipx_recv_data *rd) +{ int size; kaliaddr_ipx fromaddr; - if ((size = KaliReceivePacket(mysock.fd, outbuf, outbufsize, &fromaddr)) < 0) + if ((size = KaliReceivePacket(s->fd, outbuf, outbufsize, &fromaddr)) < 0) return -1; - rd->dst_socket = mysock.socket; + rd->dst_socket = s->socket; rd->src_socket = ntohs(fromaddr.sa_socket); memcpy(rd->src_node, fromaddr.sa_nodenum, sizeof(fromaddr.sa_nodenum)); memset(rd->src_network, 0, 4); @@ -121,20 +118,11 @@ int ipx_kali_ReceivePacket(char *outbuf, int outbufsize, return size; } -static int ipx_kali_general_PacketReady(void) { - return ipx_general_PacketReady(mysock.fd); -} - struct ipx_driver ipx_kali = { -// ipx_kali_GetMyAddress, + ipx_kali_GetMyAddress, ipx_kali_OpenSocket, ipx_kali_CloseSocket, ipx_kali_SendPacket, ipx_kali_ReceivePacket, - ipx_kali_general_PacketReady, - NULL, - 1, - NULL, - NULL, - NULL + ipx_general_PacketReady }; diff --git a/include/ipx.h b/include/ipx.h index c7459a8a..692db08e 100644 --- a/include/ipx.h +++ b/include/ipx.h @@ -12,16 +12,13 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ /* * $Source: /cvs/cvsroot/d2x/include/ipx.h,v $ - * $Revision: 1.3 $ - * $Author: bradleyb $ - * $Date: 2002-02-13 10:42:22 $ + * $Revision: 1.4 $ + * $Author: btb $ + * $Date: 2002-08-29 09:02:05 $ * * Prototype for IPX communications. * * $Log: not supported by cvs2svn $ - * Revision 1.2 2001/10/19 00:31:51 bradleyb - * Trying to get network working on win32 - * * Revision 1.1.1.1 2001/01/19 03:30:16 bradleyb * Import of d2x-0.0.8 * @@ -125,10 +122,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. // -3 if IPX not installed. // -4 if couldn't allocate low dos memory // -5 if error with getting internetwork address -extern int ipx_init( int socket_number); - -//select which "ipx" driver to use. -extern int ipx_set_driver(char *name); +extern int ipx_init( int socket_number, int show_address ); extern int ipx_change_default_socket( ushort socket_number ); -- 2.39.2