added cvsignore
[btb/d2x.git] / include / ipx.h
1 /*
2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
11 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
12 */
13 /*
14  * $Source: /cvs/cvsroot/d2x/include/ipx.h,v $
15  * $Revision: 1.3 $
16  * $Author: bradleyb $
17  * $Date: 2002-02-13 10:42:22 $
18  * 
19  * Prototype for IPX communications.
20  * 
21  * $Log: not supported by cvs2svn $
22  * Revision 1.2  2001/10/19 00:31:51  bradleyb
23  * Trying to get network working on win32
24  *
25  * Revision 1.1.1.1  2001/01/19 03:30:16  bradleyb
26  * Import of d2x-0.0.8
27  *
28  * Revision 1.1.1.1  1999/06/14 22:02:16  donut
29  * Import of d1x 1.37 source.
30  *
31  * Revision 2.6  1995/03/29  11:19:32  john
32  * Added broadcasting over a net.
33  * 
34  * Revision 2.5  1995/03/28  20:04:43  john
35  * Took away alternate server stuff.
36  * 
37  * Revision 2.4  1995/03/23  19:00:10  john
38  * Added user list capabitly.
39  * 
40  * Revision 2.3  1995/03/23  12:26:57  john
41  * Move IPX into bios lib.
42  * 
43  * Revision 2.2  1995/03/22  19:08:14  john
44  * Added code to fix sending packets over router... now
45  * we just need to make broadcasts go over router!!
46  * 
47  * Revision 2.1  1995/03/21  08:39:56  john
48  * Ifdef'd out the NETWORK code.
49  * 
50  * Revision 2.0  1995/02/27  11:30:16  john
51  * New version 2.0, which has no anonymous unions, builds with
52  * Watcom 10.0, and doesn't require parsing BITMAPS.TBL.
53  * 
54  * Revision 1.16  1995/02/16  17:34:52  john
55  * Added code to allow dynamic socket changing.
56  * 
57  * Revision 1.15  1995/01/04  21:43:27  rob
58  * Remove SPX size definition.
59  * 
60  * Revision 1.14  1995/01/03  13:46:18  john
61  * Added code that should make ipx work over different servers,
62  * but ifdef'd it out with SHAREWARE in ipx.c.  I haven't tested
63  * this, and I hope it doesn't introduce net bugs.
64  * 
65  * Revision 1.13  1994/11/02  11:37:16  rob
66  * Changed default socket number to a higher regions.
67  * 
68  * Revision 1.12  1994/11/01  15:56:51  rob
69  * Added defines for SPX socketsx.
70  * 
71  * Revision 1.11  1994/10/31  19:23:31  rob
72  * Added a prototype for the new object send function.
73  * 
74  * Revision 1.10  1994/09/07  13:37:25  john
75  * Changed default socket to 0x4000, because 
76  * the ipx/spx book says that we can only use
77  * sockets 0x4000 - 0x7fff.
78  * 
79  * Revision 1.9  1994/08/25  18:14:45  matt
80  * Changed socket because of packet change
81  * 
82  * Revision 1.8  1994/08/12  22:42:24  john
83  * Took away Player_stats; added Players array.
84  * 
85  * Revision 1.7  1994/08/09  19:31:47  john
86  * Networking changes.
87  * 
88  * Revision 1.6  1994/08/05  16:11:46  john
89  * Psuedo working version of networking.
90  * 
91  * Revision 1.5  1994/08/04  19:17:20  john
92  * Inbetween version of network stuff.
93  * 
94  * Revision 1.4  1994/07/29  16:08:59  john
95  * *** empty log message ***
96  * 
97  * Revision 1.3  1994/07/25  12:33:22  john
98  * Network "pinging" in.
99  * 
100  * Revision 1.2  1994/07/20  15:58:29  john
101  * First installment of ipx stuff.
102  * 
103  * Revision 1.1  1994/07/19  15:43:05  john
104  * Initial revision
105  * 
106  * 
107  */
108
109 #ifndef _IPX_H
110 #define _IPX_H
111
112 // The default socket to use.
113 #ifdef SHAREWARE
114          #define IPX_DEFAULT_SOCKET 0x5110
115 #else
116          #define IPX_DEFAULT_SOCKET 0x5130
117 #endif
118
119 //---------------------------------------------------------------
120 // Initializes all IPX internals. 
121 // If socket_number==0, then opens next available socket.
122 // Returns:     0  if successful.
123 //                              -1 if socket already open.
124 //                              -2      if socket table full.
125 //                              -3 if IPX not installed.
126 //                              -4 if couldn't allocate low dos memory
127 //                              -5 if error with getting internetwork address
128 extern int ipx_init( int socket_number);
129
130 //select which "ipx" driver to use.
131 extern int ipx_set_driver(char *name);
132
133 extern int ipx_change_default_socket( ushort socket_number );
134
135 // Returns a pointer to 6-byte address
136 extern ubyte * ipx_get_my_local_address();
137 // Returns a pointer to 4-byte server
138 extern ubyte * ipx_get_my_server_address();
139
140 // Determines the local address equivalent of an internetwork address.
141 void ipx_get_local_target( ubyte * server, ubyte * node, ubyte * local_target );
142
143 // If any packets waiting to be read in, this fills data in with the packet data and returns
144 // the number of bytes read.  Else returns 0 if no packets waiting.
145 extern int ipx_get_packet_data( ubyte * data );
146
147 // Sends a broadcast packet to everyone on this socket.
148 extern void ipx_send_broadcast_packet_data( ubyte * data, int datasize );
149
150 // Sends a packet to a certain address
151 extern void ipx_send_packet_data( ubyte * data, int datasize, ubyte *network, ubyte *address, ubyte *immediate_address );
152 extern void ipx_send_internetwork_packet_data( ubyte * data, int datasize, ubyte * server, ubyte *address );
153
154 #define IPX_MAX_DATA_SIZE (542)         //(546-4)
155
156 extern void ipx_read_user_file(char * filename);
157 extern void ipx_read_network_file(char * filename);
158
159 #endif
160
161