version 1.1 | | version 1.2 |
---|
| | |
#include "ipx_drv.h" | | #include "ipx_drv.h" |
#include "ukali.h" | | #include "ukali.h" |
| | |
extern unsigned char ipx_MyAddress[10]; | | static ipx_socket_t mysock; |
| | |
static int open_sockets = 0; | | static int open_sockets = 0; |
static int dynamic_socket = 0x401; | | static int dynamic_socket = 0x401; |
static int last_socket = 0; | | //static int last_socket = 0; |
| | |
int have_empty_address() { | | int have_empty_address() { |
int i; | | int i; |
| | |
return 0; | | return 0; |
} | | } |
| | |
int ipx_kali_OpenSocket(ipx_socket_t *sk, int port) { | | int ipx_kali_OpenSocket(int port) { |
printf("IPX_kali: OpenSocket on port(%d)\n", port); | | printf("IPX_kali: OpenSocket on port(%d)\n", port); |
| | |
if (!open_sockets) { | | if (!open_sockets) { |
| | |
if (!port) | | if (!port) |
port = dynamic_socket++; | | port = dynamic_socket++; |
| | |
if ((sk->fd = KaliOpenSocket(htons(port))) < 0) { | | if ((mysock.fd = KaliOpenSocket(htons(port))) < 0) { |
printf("IPX_kali: OpenSocket Failed on port(%d)\n", port); | | printf("IPX_kali: OpenSocket Failed on port(%d)\n", port); |
sk->fd = -1; | | mysock.fd = -1; |
return -1; | | return -1; |
} | | } |
open_sockets++; | | open_sockets++; |
last_socket = port; | | // last_socket = port; |
sk->socket = port; | | mysock.socket = port; |
return 0; | | return 0; |
} | | } |
| | |
void ipx_kali_CloseSocket(ipx_socket_t *mysock) { | | void ipx_kali_CloseSocket(void) { |
if (!open_sockets) { | | if (!open_sockets) { |
printf("IPX_kali: close w/o open\n"); | | printf("IPX_kali: close w/o open\n"); |
return; | | return; |
} | | } |
printf("IPX_kali: CloseSocket on port(%d)\n", mysock->socket); | | printf("IPX_kali: CloseSocket on port(%d)\n", mysock.socket); |
KaliCloseSocket(mysock->fd); | | KaliCloseSocket(mysock.fd); |
if (--open_sockets) { | | if (--open_sockets) { |
printf("IPX_kali: (closesocket) %d sockets left\n", open_sockets); | | printf("IPX_kali: (closesocket) %d sockets left\n", open_sockets); |
return; | | return; |
} | | } |
} | | } |
| | |
int ipx_kali_SendPacket(ipx_socket_t *mysock, IPXPacket_t *IPXHeader, | | int ipx_kali_SendPacket(IPXPacket_t *IPXHeader, |
u_char *data, int dataLen) { | | u_char *data, int dataLen) { |
kaliaddr_ipx toaddr; | | kaliaddr_ipx toaddr; |
int i; | | int i; |
| | |
memcpy(toaddr.sa_nodenum, IPXHeader->Destination.Node, sizeof(toaddr.sa_nodenum)); | | memcpy(toaddr.sa_nodenum, IPXHeader->Destination.Node, sizeof(toaddr.sa_nodenum)); |
memcpy(&toaddr.sa_socket, IPXHeader->Destination.Socket, sizeof(toaddr.sa_socket)); | | // memcpy(&toaddr.sa_socket, IPXHeader->Destination.Socket, sizeof(toaddr.sa_socket)); |
| | toaddr.sa_socket=htons(mysock.socket); |
| | |
if ((i = KaliSendPacket(mysock->fd, (char *)data, dataLen, &toaddr)) < 0) | | if ((i = KaliSendPacket(mysock.fd, (char *)data, dataLen, &toaddr)) < 0) |
return -1; | | return -1; |
| | |
return i; | | return i; |
} | | } |
| | |
int ipx_kali_ReceivePacket(ipx_socket_t *s, char *outbuf, int outbufsize, | | int ipx_kali_ReceivePacket(char *outbuf, int outbufsize, |
struct ipx_recv_data *rd) { | | struct ipx_recv_data *rd) { |
int size; | | int size; |
kaliaddr_ipx fromaddr; | | kaliaddr_ipx fromaddr; |
| | |
if ((size = KaliReceivePacket(s->fd, outbuf, outbufsize, &fromaddr)) < 0) | | if ((size = KaliReceivePacket(mysock.fd, outbuf, outbufsize, &fromaddr)) < 0) |
return -1; | | return -1; |
| | |
rd->dst_socket = s->socket; | | rd->dst_socket = mysock.socket; |
rd->src_socket = ntohs(fromaddr.sa_socket); | | rd->src_socket = ntohs(fromaddr.sa_socket); |
memcpy(rd->src_node, fromaddr.sa_nodenum, sizeof(fromaddr.sa_nodenum)); | | memcpy(rd->src_node, fromaddr.sa_nodenum, sizeof(fromaddr.sa_nodenum)); |
memset(rd->src_network, 0, 4); | | memset(rd->src_network, 0, 4); |
| | |
return size; | | return size; |
} | | } |
| | |
| | static int ipx_kali_general_PacketReady(void) { |
| | return ipx_general_PacketReady(mysock.fd); |
| | } |
| | |
struct ipx_driver ipx_kali = { | | struct ipx_driver ipx_kali = { |
ipx_kali_GetMyAddress, | | // ipx_kali_GetMyAddress, |
ipx_kali_OpenSocket, | | ipx_kali_OpenSocket, |
ipx_kali_CloseSocket, | | ipx_kali_CloseSocket, |
ipx_kali_SendPacket, | | ipx_kali_SendPacket, |
ipx_kali_ReceivePacket, | | ipx_kali_ReceivePacket, |
ipx_general_PacketReady | | ipx_kali_general_PacketReady, |
| | NULL, |
| | 1, |
| | NULL, |
| | NULL, |
| | NULL |
}; | | }; |