1
0
mirror of https://github.com/solemnwarning/ipxwrapper synced 2024-12-30 16:45:37 +01:00

55 Commits

Author SHA1 Message Date
Daniel Collins
3be40b6e63 Bodge asynchronous connects to almost work as they should. 2014-01-25 23:14:46 +00:00
Daniel Collins
938d95a450 Implemented accept function. 2014-01-25 22:32:23 +00:00
Daniel Collins
9114f0fb88 Updated connect to work with SPX sockets. 2014-01-25 22:32:19 +00:00
Daniel Collins
8786088252 Implemented SPX address resolution in router.
The router will search the socket table of the process for a listening SPX
socket with the correct address when a special packet is received.
2014-01-12 00:34:26 +00:00
Daniel Collins
b408f4e4e9 Implemented listen function. 2014-01-12 00:26:29 +00:00
Daniel Collins
94d3a6cbbd Create SPX (TCP) sockets when requested. 2014-01-12 00:07:57 +00:00
Daniel Collins
223bfeb35a Automatically add exceptions to Windows Firewall
If enabled (default is off) and running as an admin, add the running executable
to the Windows Firewall exception list during DLL initialisation.
2013-12-11 20:23:48 +00:00
Daniel Collins
b453669229 Cleaned up most of the winsock code and removed the RETURN/RETURN_WSA macros. 2012-11-11 22:21:22 +00:00
Daniel Collins
2a06601f53 Use a hash table instead of a linked list for storing the IPX sockets. 2012-11-11 20:54:43 +00:00
Daniel Collins
920b5ee2c3 Implemented new "address table" code for maintaining address uniqueness between
multiple IPXWrapper processes without needing a shared router thread.

Replaced router/rclient code with a single, per-process router thread.

Add addresses to the cache in the router main loop rather than winsock recv
functions.

Packets are no longer preceeded by an rpacket_header structure when relayed to
the local UDP sockets.

Each IPXWrapper instance creates a "private" UDP socket bound to a random port
on INADDR_ANY which is used for sending all packets and receiving unicast.

Bugfix: Check source socket number before relaying to a connected socket.
2012-11-11 20:26:50 +00:00
Daniel Collins
f72e88ea34 Iterate over interface broadcast addresses in sendto rather than storing a
single address in ipx_socket during router bind.
2012-11-03 12:57:34 +00:00
Daniel Collins
f087fc26b1 Removed addr_cache_ttl and iface_ttl from main_config structure. 2012-11-03 02:14:14 +00:00
Daniel Collins
ebcf1673e2 REFACTOR ALL THE THINGS. 2012-10-21 10:26:52 +00:00
Daniel Collins
0f6c458bcc Implemented new address cache. 2012-10-20 18:06:11 +00:00
Daniel Collins
8fd710578d Set 0x02 in sa_flags when packet is from a local (IPX) IP and free the hosts list while cleaning up. 2011-10-03 11:13:45 +00:00
Daniel Collins
5d1c56e5f1 Implemented IPX_EXTENDED_ADDRESS socket option. 2011-09-28 21:49:31 +00:00
Daniel Collins
322b2fe97d Added tray icon and menu with exit option to ipxrouter. Added filename argument to log_open. 2011-09-18 14:36:24 +00:00
Daniel Collins
fd555ce7c2 Implemented IPX_RECEIVE_BROADCAST option, updated router/rclient API and added proper checks when receiving broadcast packets to the router main loop. 2011-09-17 23:47:31 +00:00
Daniel Collins
646ab3b011 Reduced packet data limit to 8192 bytes, the standard driver included with XP only supports 1467 anyway. 2011-09-17 19:54:53 +00:00
Daniel Collins
412a4c3932 Implemented getpeername function. 2011-09-15 18:59:23 +00:00
Daniel Collins
3924db36b8 Implemented send function. 2011-09-15 18:53:31 +00:00
Daniel Collins
390663ba83 Implemented connect function. 2011-09-15 18:47:31 +00:00
Daniel Collins
a40d3da084 Updated getsockopt to call get_interfaces for each IPX_ADDRESS/IPX_MAX_ADAPTER_NUM call.
Deleted global interface list.

Set ipxwrapper.dll EnumProtocolsA/EnumProtocolsW stubs to load from wsock32.dll as they don't exist in ws2_32.dll.
2011-09-11 17:09:57 +00:00
Daniel Collins
b888762538 Rewrote DLL loading code to avoid corrupting the system error code. 2011-09-11 13:28:41 +00:00
Daniel Collins
f1a6cf40a2 Bugfix: Setup socket for sending packets with new router code properly. 2011-09-09 19:03:19 +00:00
Daniel Collins
8e06150325 Completed changes to allow for separate router processes. 2011-09-09 18:36:52 +00:00
Daniel Collins
431d0b8047 Began cleanup/overhaul of DirectPlay service provider. Removed last of the "extended bind" kludge implemented for previous code. 2011-09-08 18:42:27 +00:00
Daniel Collins
b1828e0958 Implemented proper SO_REUSEADDR support and fixed getsockopt to return proper value when SOL_SOCKET/SO_BROADCAST is requested. 2011-09-08 18:28:01 +00:00
Daniel Collins
b3d911abea Partial cleanup of locking code. 2011-09-08 00:20:34 +00:00
Daniel Collins
d046b6522d Switchover to new router code 2011-09-07 20:03:16 +00:00
Daniel Collins
bcbaea33c4 New router code nearing completion. 2011-08-29 13:41:10 +00:00
Daniel Collins
2674e3356f More code cleanup and a couple of files I forgot to add last commit. 2011-08-29 13:21:18 +00:00
Daniel Collins
8b1c53e0bd More code cleanup 2011-08-29 13:15:10 +00:00
Daniel Collins
9f62a21b30 Started rewrite of router code to be isolated from the rest of IPXWrapper. 2011-08-29 10:03:58 +00:00
Daniel Collins
bbfbcb79cd Lots of code cleanup. 2011-08-28 21:27:06 +00:00
Daniel Collins
e5271a3df6 Added (very) experimental DirectPlay support. 2011-08-28 15:56:05 +00:00
Daniel Collins
7b50221c63 Changed format of log timestamp and fixed buffer overflow when converting some IPX addresses to text. 2011-07-21 18:41:52 +00:00
Daniel Collins
fb68a9a593 Cleaned up logging code, added log timestamps (using GetTickCount) and changed calls in router code to prevent it from generating extra log messages. 2011-07-13 22:56:19 +00:00
Daniel Collins
84527b7eda Moved shared configuration stuff into config.h 2011-04-24 23:40:52 +00:00
Daniel Collins
6167cdcb7e Added code to filter out packets not received from the subnet of an enabled interface and a checkbox to enable/disable it. 2011-04-24 23:32:10 +00:00
Daniel Collins
3d72ad087d Send broadcasts only to the bound subnet unless option is set in registry, then use INADDR_BROADCAST. Store subnet mask in ipx_nic in load_nics(). 2011-04-24 21:55:57 +00:00
Daniel Collins
7ba8d989a3 Load UDP port number from registry and only require SO_BROADCAST to be set for receiving packets when the win95 broadcast bug is enabled. (Currently enabled by default) 2011-04-24 18:44:31 +00:00
Daniel Collins
8f4a5e1c6f Cleaned up socket() 2011-04-24 17:40:25 +00:00
Daniel Collins
53346c2536 Updated how router thread checks packet sizes, cleaned up code 2011-04-24 16:59:21 +00:00
Daniel Collins
033c7b0752 Rewrote most of the bind() function, it (should) now match the winsock API and IPX standards better. 2011-04-24 01:23:10 +00:00
Daniel Collins
a4e0add8c7 Small amount of code cleanup 2011-04-24 00:24:10 +00:00
Daniel Collins
b11036bc14 Store IPX net/node numbers in ipx_net structure during startup. 2011-04-24 00:01:38 +00:00
Daniel Collins
4afad85e3c Host list entries are now identified by both network AND node numbers and expire after TTL (60) seconds of not receiving any packets. 2011-04-23 23:42:14 +00:00
Daniel Collins
983265ffc0 Removed redundant values from ipx_nic structure and fixed bug in NIC list code. 2011-04-23 20:13:21 +00:00
Daniel Collins
e4534b91eb Load interface options from registry and handle enabled/primary flags. 2011-04-23 19:49:53 +00:00