Hugo Santos
8aa4c7e370
prepared the ipv4 multicast code for full multicast support.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20945 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-01 11:38:59 +00:00
Hugo Santos
1a41adbcd2
added join_multicast/leave_multicast to datalink protocols, preparing for full multicast support.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20944 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-05-01 11:38:39 +00:00
Hugo Santos
73f1548be1
some getsockopt/setsockopt and multicast fixes.
...
* allow an ipv4 bind() to a multicast address.
* bumped getsockopt/setsockopt kernel driver buffers to 256 bytes to at least handle structures which take one sockaddr_storage.
* convert generic multicast delta API names to IPv4 ones before handling the specific option.
* changed ipv4_getsockopt/ipv4_setsockopt a bit as the code gcc 2.95 was generating was a bit too funky.
* properly pass setsockopt/getsockopt to handling protocols.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20939 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-30 19:42:12 +00:00
Hugo Santos
75f1f9e04a
added two more test multicast applications: multicat/multisend. sockaddr_in6/in6_addr must be visible through <netinet/in.h>, fixed that as well.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20926 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-30 16:56:58 +00:00
Hugo Santos
0086fe2095
possibly fix to #1190 , the endpoint wasn't being unlinked on Free().
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20924 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-30 16:04:38 +00:00
Hugo Santos
57967505c2
fixed getsockopt/setsockopt callchains. also fixed the cleanup of multicast filters.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20923 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-30 12:32:08 +00:00
Hugo Santos
3df919a7a0
added 'ipv4_multicast' debugger command.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20922 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-30 12:31:57 +00:00
Hugo Santos
a3debe29d7
simple test multicast application.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20921 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-30 12:31:47 +00:00
Hugo Santos
0e30c21c70
ipv4: changed the multicast filter to use an hash table to keep source states.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20920 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-30 12:31:31 +00:00
Hugo Santos
8cfe0be38e
slab/cache: a couple more fixes.
...
- on CACHE_DURING_BOOT init benaphore count with 1.
- account for allocated space on early_allocate_pages.
- fixed slab position calculation in small slabs.
- we can now init all allocator sizes early rather than later.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20914 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-30 01:08:05 +00:00
Hugo Santos
698b6d7195
cache/slab: when CACHE_DURING_BOOT is specified, use vm_allocate_early to obtain pages for slabs, and create the associated areas on post bootup.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20913 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 22:58:46 +00:00
Hugo Santos
39af445966
added object_cache_reserve to allow cache users to pre-allocate slabs.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20912 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 21:45:23 +00:00
Hugo Santos
11debaf6e4
added CACHE_UNLOCKED_PAGES flag to allow caches' pages to be created with no locking instead of full locking.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20911 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 20:55:44 +00:00
Hugo Santos
6b783773bf
use OpenHashTable in IPv4's MulticastGroups.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20910 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 20:55:33 +00:00
Hugo Santos
15945a11c6
added 'tcp_endpoints' and 'tcp_endpoint' debugger commands.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20909 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 19:30:20 +00:00
Hugo Santos
cf5d9f4b8d
added 'udp_endpoints' debugger command.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20908 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 19:03:06 +00:00
Hugo Santos
14342a6767
cache allocator: keep allocation waste statistics. added debugger command 'show_waste'.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20903 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 15:28:31 +00:00
Hugo Santos
c49aa60ace
cache allocator: for allocations > 8k create areas, and delete them on free.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20902 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 15:13:09 +00:00
Hugo Santos
0be6e97788
minimal cleanups
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20901 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 13:11:30 +00:00
Hugo Santos
9a9cba598a
don't need TRACE_SLAB by default now.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20898 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 03:41:10 +00:00
Hugo Santos
172b3066aa
fixed the cache allocator's size_to_cache.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20897 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 03:33:51 +00:00
Hugo Santos
6bad493439
pushed the slab init a bit deeper. added a object cache based allocator, including a bootstrap mechanism to have it init during bootup.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20896 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-29 02:23:37 +00:00
Hugo Santos
6e31ae98f9
some object cache / slab improvements.
...
- call the reclaimer callback when low on memory.
- use the depot when on multi-cpu setups (for scalability).
- fixed the amount of memory spent on slabs for very large objects.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20889 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-28 21:35:23 +00:00
Hugo Santos
11b5020f2f
rewrote the object cache (slab) implementation a bit, preparing for further integration.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20887 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-28 18:53:58 +00:00
Hugo Santos
8a96ba39e3
some slab cleanups, split the C interface to another file.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20875 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-28 09:37:38 +00:00
Hugo Santos
4e8a1b331f
miniature cleanups.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20874 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-28 09:37:26 +00:00
Hugo Santos
f1a5bab268
while iterating through the endpoint table, only do so for the port in context.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20867 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 15:59:31 +00:00
Hugo Santos
9cd3b980fd
fixed a long standing binding issue with spawned sockets and TCP. also fixed bind() address checking rules.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20866 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 15:49:00 +00:00
Hugo Santos
342444bc95
replaced TCP's Endpoint Manager manual handling of endpoint lists with MultiHashTable.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20865 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 15:06:41 +00:00
Hugo Santos
505e98538a
introduced MultiHashTable, similiar to multimap, but with hash table semantics.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20864 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 15:06:30 +00:00
Hugo Santos
e2200e347d
call ProtocolSocket::Open() for accept()ed sockets. This fixes a regression introduced earlier today.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20863 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 14:47:43 +00:00
Hugo Santos
01a10fc527
fixed OpenHashTable::Iterator, it wasn't working for a single item.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20862 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 14:47:34 +00:00
Hugo Santos
727ad0b0a5
completed UDP's locking.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20857 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 11:30:03 +00:00
Hugo Santos
40bbf8600e
made UDP use OpenHashTable for the endpoint table, part of the lookup is now inlined.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20854 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 08:07:45 +00:00
Hugo Santos
8ac2dba331
added iterator to OpenHashTable.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20853 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 08:07:38 +00:00
Hugo Santos
0cd08b100c
ups, TRACE_SLAB was on.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20852 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 08:07:30 +00:00
Hugo Santos
5084c83901
addressed Axel's suggestion regarding SocketAddress' GetPort() name.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20851 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 07:20:43 +00:00
Hugo Santos
25a2744f9e
adapted UDP to use AddressUtilities, for readability.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 07:10:11 +00:00
Hugo Santos
c72ab92d84
adapted UDP to use ProtocolSocket which it already derived through DatagramSocket.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20849 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 07:10:03 +00:00
Hugo Santos
4b55736dde
added new helper ProtocolSocket. Moved some stuff together to achieve better inlining.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20848 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 07:09:46 +00:00
Hugo Santos
5d6551d69f
removed some of the slab's initial heavy debugging. we now merge the links into the slab itself resulting in zero overhead per buffer with MergedLink strategy.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20841 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-26 15:40:53 +00:00
Hugo Santos
d7ae189ecf
slab: be smarter when picking the underlying strategy for the slab C API (based on requested object size).
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20840 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-26 12:21:38 +00:00
Hugo Santos
e6fb3d3947
more slab fixes, also introduced a new strategy optimized for medium sized buffers (64 >= x < 512) with lengths other than power of 2 (has an overhead of 2 words per buffer).
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20839 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-26 11:38:24 +00:00
Hugo Santos
dd89ad0e7e
added locking to slab's Cache<>. Now we react to system's low memory conditions freeing up empty slabs.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20836 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-26 07:31:19 +00:00
Hugo Santos
b8c0d6618e
gcc 4 compilation fixes.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20835 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-26 06:32:25 +00:00
Hugo Santos
457b03ecb4
net_buffer is the first user of the new slab allocator, let's see how it goes.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20834 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-26 06:05:23 +00:00
Hugo Santos
81bc570922
assorted slab fixes.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20833 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-26 06:05:08 +00:00
Hugo Santos
81423c91c7
added initial slab code to the kernel. It is still unused, and there is still no VM interaction.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20832 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-26 03:41:24 +00:00
Hugo Santos
4171bc72bc
test_slab: moved the Backend independent HashCacheStrategy operations to BaseHashCacheStrategy so we don't end up with multiple instantiations of the same code.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20826 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-25 19:54:18 +00:00
Hugo Santos
118044d0d5
updated test_slab to use the new OpenHashTable's API.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20825 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-25 19:28:08 +00:00
Hugo Santos
77e70865e1
moved the storage requirements (i.e. ParentType *) to OpenHashTable's Definition which we now instantiate per OpenHashTable.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20824 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-25 19:21:06 +00:00
Hugo Santos
226bb7a9d4
fixed a nice C-induced issue which was making us rewrite stuff.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20823 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-25 18:55:27 +00:00
Hugo Santos
2586c25e31
use Chaining in OpenHashTable.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20822 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-25 18:55:05 +00:00
Hugo Santos
66a4a42802
added Recv-Q/Send-Q output to netstat.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20819 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-25 17:41:18 +00:00
Hugo Santos
585195c28d
introduced SocketAddress wrappers and use them in TCP.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20818 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-25 17:41:01 +00:00
Hugo Santos
a1a9e858a2
tiny TCP cleanups
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20815 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-25 16:28:20 +00:00
Hugo Santos
53f23f85a2
partially rewrote TCP's endpoint manager. Fixes #1173
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20814 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-25 16:14:14 +00:00
Hugo Santos
f8486a0219
fixed an issue where a TCP connection would fail if the first expected segment of data was lost. Reported by Axel.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20796 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-24 16:14:35 +00:00
Hugo Santos
cd95756047
added test_slab to tests/system/kernel/Jamfile.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20793 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-24 11:05:00 +00:00
Hugo Santos
a30fb13f58
added a test Slab implementation to tests/ (including Depot management for SMP scalability). after a bit more of testing this will be added to the kernel (still without VM integration).
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20792 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-24 11:04:47 +00:00
Hugo Santos
85dbe747c4
open addressing self-extending hash table implementation.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20791 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-24 11:04:35 +00:00
Hugo Santos
006e498fa9
transmit our timestamp in network order. Fixes a problem with sending data to Linux and BSD hosts which Travis helped debug. Also only update SRTT when data has been acknowledged.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20787 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-23 22:15:20 +00:00
Hugo Santos
39faeeba38
when sending pure ACKs, use an artificial window of 0.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20778 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-21 03:11:05 +00:00
Hugo Santos
204aa45b0b
allow window updates to be sent after consuming data from the receive buffer. This fixes an issue where people were experiencing hangs in TCP downloads.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20777 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-21 02:37:17 +00:00
Hugo Santos
f1b088e623
fixed an issue with TCP where it possibly could not recover from a retransmission as the RCV.NXT was wrongly updated. When appending data we now set it to the sequence in the end of the receive queue.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20776 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-20 23:18:06 +00:00
Hugo Santos
739e994278
TCP: added SACK definitions and option processing.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20775 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-20 20:50:24 +00:00
Hugo Santos
530017c6c9
check option length when processing TCP options.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20774 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-20 19:04:08 +00:00
Hugo Santos
c70d3bafd3
more TCP fixes, we should now be able to send large amounts of data through congestioned links.
...
- fixed BufferQueue's RemoveUntil.
- reset SND.NXT on third duplicate ACK (fast retransmit).
- on retransmit reset SND.NXT to SND.UNA (it will be updated back when we get good ACKs).
- fixed effective window calculation.
- relaxed SWS checking a bit, don't send partial packets on retransmission as the window might have been reduced due to congestion.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20769 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-20 09:21:55 +00:00
Hugo Santos
8a819b17e4
retrieve the incoming interface on the domain_receive_adapter(). This should fix potential issues with packets addressed to the IP broadcast address, such as in with some DHCP implementations.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20767 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-20 04:40:53 +00:00
Hugo Santos
74b0e85845
merged a bit more of functionality into DatagramSocket so we don't require a custom ReadData in the link protocol.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20765 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-20 02:13:54 +00:00
Hugo Santos
2445c00e64
some internal reorganization of getsockopt()/setsockopt() handling. TCP is now able to fully use the application requested sender/receiver buffer sizes for improved performance.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20764 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-20 01:58:14 +00:00
Hugo Santos
e6f333541a
moved tcptester to tests/.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20762 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-19 22:03:54 +00:00
Hugo Santos
421a4def57
some TCP tweaks.
...
- check the effective window against the flight size.
- start the RTT estimates relatively high.
- introduced a TCP PROBE debug message for offline processing and TCP debugging.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20750 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-19 10:23:04 +00:00
Hugo Santos
69adff2f81
A very simple controlable traffic generator for TCP testing.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20749 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-19 06:39:05 +00:00
Hugo Santos
1d63ea3372
some TCP performance improvements.
...
- support TCP fast retransmit/fast recovery.
- maintain the RTT average time and update the retransmit timeout accordingly.
- improvements to TCP Slow start / congestion avoidance.
- better handling of the retransmission timer.
- properly size segments taking the TCP options length into consideration.
- as an interim fix, update the SendQ/RecvQ sizes on Connect().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20748 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-19 00:54:31 +00:00
Hugo Santos
5534294ca1
TCP: only set FIN after the send queue has been exausted and we are in a state that requires it.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20735 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-17 08:02:41 +00:00
Hugo Santos
7d524fb79b
implemented TCP's slow start and congestion avoidance.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20734 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-17 05:55:03 +00:00
Hugo Santos
f19e1f47da
reorganized some of the TCP logic so we have common init paths for receive and send.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20731 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-17 03:39:24 +00:00
Hugo Santos
aa07700795
update Window Scaling variables when a simultaneous open is ACKed.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20730 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-17 01:25:08 +00:00
Hugo Santos
58bef2f444
support TCP Window Scale on sent segments.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20729 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-17 01:07:58 +00:00
Hugo Santos
4ee088419f
assorted TCP fixes.
...
- fixed the locking for spawned connections and accept()s.
- return EMSGSIZE if the user is trying to write more data than the send buffer can hold.
- fixed a crash when receiving a RST while the connection is being closed.
- don't wake up readers when the connection gets established.
- endpoint managers lock must be recursive to properly work with spawn'ed sockets.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20727 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-16 18:32:49 +00:00
Hugo Santos
f56b0aa00d
fixed arp's ClearQueue when an entry is rejected.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20726 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-16 15:27:13 +00:00
Hugo Santos
c07371587f
made ETHER_DEBUG use dprintf() as the previous logic was screwing badly and making the boot sequence hang in some setups (specifically qemu, may have fixed issues with Parallels as well).
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20721 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-16 04:27:37 +00:00
Hugo Santos
ca1b900bdb
support RFC 1323's TCP Timestamps (we are still not updating our estimator though).
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-16 03:19:59 +00:00
Hugo Santos
03d7f17e07
made TCP handle multiple domains.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20718 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-16 00:27:39 +00:00
Hugo Santos
d5b5a2c2f8
introduced Checksum::PseudoHeader helper.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20717 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 23:18:15 +00:00
Hugo Santos
1408d1f0ce
introduced datalink's send_datagram to perform route and source address selection and dispatch the datagram to appropriate domain/protocol.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20714 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 22:11:12 +00:00
Hugo Santos
f106e0650e
print the new 'active' flag in arp entries
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20713 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 21:00:32 +00:00
Hugo Santos
624c52d8b7
ARP now queues packets while resolving a destination instead of blocking on send_data(). This fixes several issues:
...
- TCP now behaves correctly when receiving new connections as its SYN/ACK is queued, or if lost correctly retransmitted when the peer resends a SYN.
- The first ICMP Replies from an external on-link host pinging Haiku are no longer lost.
- Reduced the number of ARP messages Haiku needs to generate until resolving an entry.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20712 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 21:00:12 +00:00
Hugo Santos
fbaad6fdb5
fixed an issue where TCP would RST a connection when a peer trying to connect us re-sent their SYN.
...
- In fact our SYN/ACK reply is being lost due to ARP resolving as we are waiting in the device's receive path, thus we never get replies before timing out. This requires queueing during ARP resolving.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20706 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 17:34:52 +00:00
Hugo Santos
4526eff137
gcc 4 template instantiation fixes
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20697 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 08:24:40 +00:00
Hugo Santos
342824b6da
fixed the reception of multicast frames by RAW sockets.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20696 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 07:46:30 +00:00
Hugo Santos
6a60618094
glued the multicast filter handling to the receive path: we are now capable of receiving multicast frames in datagram sockets.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20695 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 07:31:04 +00:00
Hugo Santos
4229d7091e
made UDP's send_data call into IPv4's, so we can handle of the datagram stuff in one place.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20694 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 05:23:28 +00:00
Hugo Santos
629878443b
made IPv4's send path be multicast aware.
...
- also added IP_MULTICAST_TTL support.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20693 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 05:23:18 +00:00
Hugo Santos
d3be414572
initial IPv4 multicast receive path.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20692 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 04:02:02 +00:00
Hugo Santos
6c501a4085
support RFC 3678's Protocol-Independent setsockopt()s for IPv4 multicast.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20691 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 03:07:28 +00:00
Hugo Santos
46527f6806
initial steps towards IPv4 Multicast Filter Delta API (RFC 3678)
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20690 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 02:44:01 +00:00
Hugo Santos
49f3c71e21
respect SO_BROADCAST for received and sent datagrams.
...
- check if the destination address is specified in IPv4's SendData()
- minor cleanups to IPv4's TRACE()s.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20681 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-13 21:33:13 +00:00
Hugo Santos
658a550639
use module_dependencies to load the required modules by udp, tcp, ipv4, icmp and arp.
...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20676 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-13 14:37:48 +00:00