History log of /haiku/src/add-ons/kernel/network/protocols/udp/udp.cpp
Revision Date Author Comments
# e94ea7bc 14-Dec-2021 Augustin Cavalier <waddlesplash@gmail.com>

UDP: Fix double-reference of DomainSupport.

PulkoMandy in cb3199681eb2ed53850595d374e4989dbd62a3fa changed
the _GetDomainSupport functions to always Ref() the the object.
However, that means in the case of the second _GetDomainSupport
function, which is implemented in terms of the first, we should
not call Ref() as this will create a double-reference.

Fixes a memory leak.

Change-Id: Ib82b2dadc0c8cc8d8f95efcffeb2430ac602a0a9
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4791
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# cb319968 13-May-2021 Adrien Destugues <pulkomandy@pulkomandy.tk>

UDP: apply review comments from hrev51603

I found this at the bottom of my TODO list…

- UdpDomainSupport methods were referring to the object through a static
variable when they could just use the "this" object instead.
- Use BAutoDeleter to simplify the code a little
- Style problem (missing != NULL in pointer check)
- Move referencing of domainSupport in _GetDomainSupport instead of
OpenEndpoint. This way the two _GetDomainSupport methods both return
an already referenced object

Thanks to Axel for the code review and sorry for the super late reply.

Change-Id: Ic50ebb1a63a203d5aa393d28f4631c345acacc79
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3908
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# a03ed4fa 01-May-2020 Jérôme Duval <jerome.duval@gmail.com>

udp: set is_connected flag on our socket once connected.

Change-Id: Ie5fcc5152af813d74d33c20ed7c3e81f9e828518
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2548
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# bf9a85cb 01-May-2020 Jérôme Duval <jerome.duval@gmail.com>

udp: fix trace build on x86_64.

add current thread id.

Change-Id: I275dcee5ae27e357c8733a1aab9310e9dbc7a839
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2546
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# eb5604bc 22-Nov-2017 Adrien Destugues <pulkomandy@pulkomandy.tk>

UDP: keep a reference to domain when we need it

The domains could be deleted by other threads while we were using them
to handle incoming packets, leading to an use after free (deadbeef).

Keep a reference to the doamin as long as we need it so other threads
will not delete them.

Fixes #9721, #12567


# 74e1a530 11-Jul-2014 Jérôme Duval <jerome.duval@gmail.com>

Revert unrelated part of 17aa359b5df69f658b4b33e29546c9fb2f0cfce3.


# 17aa359b 28-Jun-2014 Akshay Jaggi <akshay1994.leo@gmail.com>

XHCI USB: Fixes.

* Add support for hubs in AllocateDevice().
* Prevent page fault in FinishTransfers().
* Set fCapabilityLength
* Correct in BIOS ownership code
* Fix context errors in _InsertEndpointForPipe().
* Update constants according to latest Specification (v1.1)
* Fix SMI code (reference
http://lkml.iu.edu/hypermail/linux/kernel/1204.2/02460.html).
* Fix Memory/Device-Slot leaks.
* Fix area allocation for TRBs.
* Fix for Intel Lynx Point and Panther Point chipsets. Also move init
of xhci before ehci, to switch USB 2.0 ports before the ehci module
discovers them.

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# 83fd8a61 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

Closing an UDP socket should wake all blocked recv()


# 184fada4 17-Apr-2013 Philippe Houdoin <philippe.houdoin@gmail.com>

Connecting an UDP endpoint was resetting a previously bound local port. Fix #9678


# 6d796a84 10-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Fixed up network stack and drivers for x86_64.

* Various compilation fixes.
* Fixes to the FreeBSD compatibility layer (from comparing the x86-
specific bits with the equivalent amd64 sources in FreeBSD).
* Compile all the Ethernet drivers except for sis900 and wb840, these
require a bit more work to fix (will file a ticket soon). Tested
ipro1000 and rtl81xx, no issues.


# da0d7409 28-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Fixed broken UDP for non device bound sockets.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38415 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bbbb5592 27-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* UDP now respects the net_socket::bound_to_device field when propagating data
to endpoints. This should help with the final issues of bug #6454.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38397 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9d433190 26-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Now we should also support link layer and INADDR_BROADCAST broadcasts again
correctly.
* This should finally fix ticket #6454, but I keep it open until it's confirmed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38365 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cb99c915 25-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* The KDL command "udp_endpoints" did not work anymore, since
DatagramSocket::AvailableData() locks; introduced a UdpEndpoint::Dump() method
to work around that.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38355 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7e046eab 17-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* UDP really wanted to make sure that the error buffer was freed, and just did
it once more. This should be the final nail on bug #6446.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38178 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3f2a18bd 16-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* The UDP protocol was deleting a received error buffer twice in the case that
everything went okay. This finally fixes #6446.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38145 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2b415445 04-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Finished groundwork on ICMP by introducing a completely protocol agnostic
error mechanism.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37896 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2651e51d 02-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Renamed net_datalink_module::send_data() to send_routed_data(), and
send_datagram() to send_data().
* Renamed DatagramSocket::SocketEnqueue() to EnqueueClone(), SocketDequeue()
to Dequeue().
* Ordered the methods in ProtocolUtilities.h according to their declaration.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37870 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca215dfe 02-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Replaced more occurences of EOPNOTSUPP with B_NOT_SUPPORTED.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37847 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61729d93 28-Jul-2010 Axel Dörfler <axeld@pinc-software.de>

* Reworked the complete stack to allow more than one address per network
interface - this caused quite a number of changes.
* Network interfaces, and its addresses are now reference counted (not yet
complete, though, InterfaceAddresses need to hold references to their
interface as well).
* There are two known regressions of this commit that I will fix later:
- you cannot remove interfaces anymore
- IPv4 multicast was broken anyway, but now it's disabled, too.
* Moved a device_interfaces.cpp|h out of interfaces.cpp.
* The datalink layer chain is now instantiated per domain per interface,
not just per interface anymore.
* When a buffer reaches the network layer, it has no known interface yet, ie.
the ipv4|6|whatever modules need to set this manually.
* Added more debug output, and some new debugger commands, the control option
is now printed in clear text.
* Added hash_address() function to the address modules. Added "const" to
set_to_defaults() where needed.
* Fixed net_buffer's restore header functions offset use as reported by Atis.
* Improved buffer dump output, use the domain module to print the address if
available.
* Moved net_buffer::type into the union, as it's not needed by the upper layers
anymore.
* Moved IPv6 specific code from {add|remove}_default_route() to where it
belongs, but disabled it for the time being.
* Completely discarded useless ipv4_datagram module.
* Added ping6 to the build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37794 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2e1729d0 23-Jul-2010 Axel Dörfler <axeld@pinc-software.de>

* Removed _EndpointFor() again; DeliverError() is using _FindActiveEndpoint()
instead, ie. ICMP errors are only forwarded to connected UDP sockets.
* Also notify the DatagramSocket's dequeue loop if an error occurs - this makes
udp_unreachable finally work as intended.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37714 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2bb43d82 21-Jul-2010 Axel Dörfler <axeld@pinc-software.de>

* First (untested) steps into ICMP support for UDP: we should send port
unreached ICMP messages now, and at least signal an error to select() (there
is no mechanism yet to actually forward the error to userland).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37651 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8d1485fa 19-Jul-2010 Axel Dörfler <axeld@pinc-software.de>

Work in progress commit by Atis Elsts (I'm posting his ChangeLog comments
directly here), I made only a few style changes:
* introduced 'has_broadcast_address' field in
struct net_address_module_info
- REVIEW: the name, and the status of this field for UNIX and L2CAP
families
* ipv6 address family support
* ipv6 address printing
* ipv6 protocol support
* ipv6 multicast support
- TODO: add and remove multicast routes in a more proper way
- TODO: support MLD
* ipv6 datalink protocol support
* icmpv6 protocol support (EchoRequest and EchoResponse messages)
* ipv6 neigbor discovery protocol support
(Advertisement and Solicitation messages)
- TODO: only the very basic support is present,
the protocol state machine is by no means completed
- TODO: replying to Solicitation does not work too good ATM
(visible, when pinging Haiku from outside)
* added Jenkin's hash algorith
* minor changes in existing IPv4 code - cleanup function
ipv4_get_loopback_address(), written by myself
* add tests: raw, udp, tcp/udp, mullicast sender
* add 'hoplimit' field in struct net_buffer
- TODO: this is just a hack, more generic approach would be better.
* add 'receive_data' function pointer in
struct net_datalink_protocol_module_info
- TODO: this is also more like a hack, to support information
passing from ICMPv6 to IPv6_datagram level.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37604 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56f097eb 12-Apr-2010 Oliver Tappe <zooey@hirschkaefer.de>

Applying patch by Atis Elsts:
* fix connecting to INADDR_ANY work for tcp (effectively will
connect to INADDR_LOOPBACK)
* add same behaviour to udp
* move some ipv4-specific code out of tcp into ipv4 address module
* bind() and connect() now reject addresses from non-matching
families
* myself: minor cleanup in udp.cpp with respect to 80 chars limit
Closes #5716 - many thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36192 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4e45de0e 10-Jan-2010 Oliver Tappe <zooey@hirschkaefer.de>

* when connect()ing an UDP socket, we need to set the local address to the
default address of the outgoing interface as a side-effect


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34989 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5147963d 26-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

headers/private/kernel/util/OpenHashTable.h, Hugo's version, is a bit nicer than
Tracker's OpenHashTable.h which it should eventually replace. We've renamed the
class to BOpenHashTable and changed the interface slightly so that HashTableLink
became superfluous.
Adapted all the code that used it. Since the OpenHashTables no longer clash,
this should fix the GCC4 build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31791 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 78888c44 15-Jul-2009 Axel Dörfler <axeld@pinc-software.de>

Applied patch by Ma Jie adding functionality needed by mDNSResponder:
* added new protocol method process_ancillary_data_no_container() that does not
need a container to fill the cmsghdr data.
* Added support for the IP_RECVDSTADDR option using this call.
* Implemented support for IP_MULTICAST_IF.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31585 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9871124e 17-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Added missing hooks with a description of what's missing for clarity.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31077 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d0eaec30 01-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Fix more operator precedence errors. These do not do what you'd expect at first
sight. The comparison operator takes precedence over the binary ones.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29121 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fb3e35fc 22-Jan-2009 Michael Lotz <mmlr@mlotz.ch>

Fixing all headers/namespaces/name lookup problems that hinder a GCC 4.3.2
build. I sure hope that this doesn't break the build for anyone else.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28992 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f861e599 10-Jan-2009 François Revol <revol@free.fr>

typo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28870 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9e051839 19-Jul-2008 Oliver Tappe <zooey@hirschkaefer.de>

* some minor cleanups and clarifications
* dropped tracing of udp-header


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26518 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 276aa463 24-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Replaced the useless InitCheck() method in {Open,Multi}HashTable (it
always returned B_OK) by a Init() method, which sets the initial size
and returns an error, if that fails.
* Adjusted code using the classes accordingly. Replaced a few
InitCheck() methods in the network code by Init().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26127 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2b07b8e0 28-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Replaced all instances of benaphores in the kernel code by mutexes.
* Removed kernel benaphores.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25690 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6f58064f 07-Feb-2008 Axel Dörfler <axeld@pinc-software.de>

* Added flags field in net_protocol_module_info; there is currently a single
defined flag: NET_PROTOCOL_ATOMIC_MESSAGES.
* socket_send() now honours NET_PROTOCOL_ATOMIC_MESSAGES and returns either
EMSGSIZE if the data to be send is larger than net_socket::send::buffer_size,
or divides the data in appropriately sized chunks.
* This fixes sending >=64K over a TCP socket at once (TCP would just have
returned an error in that case).
* TCP now overrides the default send buffer size (to 32768 for now).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23915 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 84052230 31-Jul-2007 Axel Dörfler <axeld@pinc-software.de>

axeld+bonefish: Got rid of the ParentType in the HashTableDefinition; it doesn't really
belong there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21766 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 119c6cdd 14-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Use the AutoLocker defined by the super class.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21609 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a1deb55e 23-May-2007 Hugo Santos <hugosantos@nowhere.fake>

net_interface_private: added receive queue and splited device reading from packet processing. Delivering to self no longer is executed in the sender's context, which had some problems with TCP's locking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21214 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 79a0d252 22-May-2007 Hugo Santos <hugosantos@nowhere.fake>

net_buffer: preparing for better metadata management


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21210 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 45b5203b 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

network stack: getsockopt/setsockopt are no longer optional for protocols, as suggested by Axel.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21085 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f6cfc5af 02-May-2007 Hugo Santos <hugosantos@nowhere.fake>

set ValueIterator's fIndex to the next slot so OpenHashTable's Iterator properly gets it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20974 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0086fe20 30-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# cf5d9f4b 29-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

added 'udp_endpoints' debugger command.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20908 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4e8a1b33 28-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

miniature cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20874 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 727ad0b0 27-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

completed UDP's locking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20857 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40bbf860 27-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 5084c839 27-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

addressed Axel's suggestion regarding SocketAddress' GetPort() name.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20851 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 25a2744f 27-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

adapted UDP to use AddressUtilities, for readability.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20850 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c72ab92d 27-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 53f23f85 25-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

partially rewrote TCP's endpoint manager. Fixes #1173


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20814 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2445c00e 19-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# d5b5a2c2 15-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

introduced Checksum::PseudoHeader helper.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20717 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1408d1f0 15-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 6a606180 15-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 4229d709 14-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 49f3c71e 13-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 658a5506 13-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# d438fa4c 12-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

added buffer, datalink and socket module references to the stack module so we don't have to load them in each other module.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20673 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bfb45f71 12-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

introduced a new helper class DatagramSocket which provides a consistent base interface and functionality for the implementation of datagram-based sockets.

- made the ipv4 raw, udp and link protocols use DatagramSocket.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20672 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bf48e753 12-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

made UDP agnostic to the underlying network protocol (preparing some work into the future).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20661 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6c353509 11-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

moved address selection logic to a new 'get_buffer_route'.

- IPv4 now assumes the addresses it is supplied in send_routed_data are already the appropriate ones.
- made the Data(), operator* and operator-> methods in NetBufferFieldReader const so we can use them in the same expression as the constructor.
- fixed an issue with UDP where the wrong source address could be used in the calculating the checksum.
- changed ipv4_print_address to use the more common 0.0.0.0 format.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20660 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 87001e05 11-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

some NetBufferUtility revamp.

- introduced base NetBufferFieldReader which deals with obtaining a continuguous field to deal with.
- renamed Detach() to Sync() to better express the fact that we may be writing to the buffer.
- Fixed IPv4's and ICMP's checksum calculation as it assumed the underlying header was contiguous.
- ICMP is now able to reply to ICMP Echo Requests which were split across data nodes.
- in split_buffer(), make sure we were able to trim() the new buffer before damaging the original one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20657 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d86f48f3 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

tiny TCP cleanups, move the read notifications to _NotifyReader().

- Also fixed the buffer size check in UDP's SendData() since UDP's length field includes the size of the header we need to check that as well. IPv4 is correct since we check for the size after prepending the header (due to it being possibly already included).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20592 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4168e54a 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

send buffer size is irrelevant for UDP, instead check if the fed buffer is larger than the maximum payload UDP supported. Do the same in IPV4.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20590 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9e084902 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

small cleanups in UDP

- don't set_to_empty_address, instead consider NULL to be the empty address and use is_empty_address().
- most ipv4 address module calls already consider NULL to be the empty address, ipv4_hash_address_pair didn't, fixed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20589 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c3e054c8 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

fixed an issue in UDP due to copying addresses to sockaddr, which may be too small for protocols other than IPv4. In fact, we don't need to copy the addresses at all, we can use the original address pointers in the hash key for lookup and hashing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20588 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0d5afa4d 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

introduced fifo_socket_enqueue_buffer which clones the buffer, enqueues it to the fifo and notifies the socket.

- changed the link, ipv4 and udp modules to use fifo_socket_enqueue_buffer


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20587 a95241bf-73f2-0310-859d-f6bbb57e9c96


# abe1ec18 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

properly support MSG_TRUNC. we don't even have to trim the buffer, just try to fill the user buffers as much as possible


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20582 a95241bf-73f2-0310-859d-f6bbb57e9c96


# af3a31f7 01-Jan-2007 Axel Dörfler <axeld@pinc-software.de>

Calmed down the networking stack a lot - since it basically works, there is no
reason to slow it down with debug output that much; this will also help investigating
some issues where you just aren't interested in most of the output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19672 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c35b04de 02-Nov-2006 Axel Dörfler <axeld@pinc-software.de>

* Moved the TCPConnection class into its own file.
* Added some missing result checks, mostly for allocations.
* Fixed a wrong precendence with the ?: operator
* Some minor cleanup.
* Renamed sBufferModule to gBufferModule - the header expects it to be a global,
so it should be named like one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19178 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a7028ce6 06-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

* Implemented select support for sockets and notifications, not yet tested, though;
this closes ticket #811.
* Added notification support to IPv4 and UDP.
* Implemented reading out SO_ERROR.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19017 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 891a127f 17-Sep-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

various gcc 4 related build fixes


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18876 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c22d69bf 08-Aug-2006 Axel Dörfler <axeld@pinc-software.de>

* Completed the previous commit and merger of the team/network/new_stack branch.
* Removed ppp_up and pppcontrol from the image for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18457 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 74e1a530f88029d2933619301c56f23bf31e96a1 11-Jul-2014 Jérôme Duval <jerome.duval@gmail.com>

Revert unrelated part of 17aa359b5df69f658b4b33e29546c9fb2f0cfce3.


# 17aa359b5df69f658b4b33e29546c9fb2f0cfce3 28-Jun-2014 Akshay Jaggi <akshay1994.leo@gmail.com>

XHCI USB: Fixes.

* Add support for hubs in AllocateDevice().
* Prevent page fault in FinishTransfers().
* Set fCapabilityLength
* Correct in BIOS ownership code
* Fix context errors in _InsertEndpointForPipe().
* Update constants according to latest Specification (v1.1)
* Fix SMI code (reference
http://lkml.iu.edu/hypermail/linux/kernel/1204.2/02460.html).
* Fix Memory/Device-Slot leaks.
* Fix area allocation for TRBs.
* Fix for Intel Lynx Point and Panther Point chipsets. Also move init
of xhci before ehci, to switch USB 2.0 ports before the ehci module
discovers them.

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# 83fd8a6199cba34486eb2e28086e3ee244c89e66 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

Closing an UDP socket should wake all blocked recv()


# 184fada4e9edd0586f64e64decca22404e23f4c9 17-Apr-2013 Philippe Houdoin <philippe.houdoin@gmail.com>

Connecting an UDP endpoint was resetting a previously bound local port. Fix #9678


# 6d796a84bd484ccc4fb072a29c663b660180ae51 10-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Fixed up network stack and drivers for x86_64.

* Various compilation fixes.
* Fixes to the FreeBSD compatibility layer (from comparing the x86-
specific bits with the equivalent amd64 sources in FreeBSD).
* Compile all the Ethernet drivers except for sis900 and wb840, these
require a bit more work to fix (will file a ticket soon). Tested
ipro1000 and rtl81xx, no issues.


# da0d740954abc809592ebf0b3cebbf78cf200d39 28-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Fixed broken UDP for non device bound sockets.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38415 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bbbb5592e494946735177efe9d02353330924c9b 27-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* UDP now respects the net_socket::bound_to_device field when propagating data
to endpoints. This should help with the final issues of bug #6454.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38397 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9d4331902caac05ca23bc6f4d27342acce15f202 26-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Now we should also support link layer and INADDR_BROADCAST broadcasts again
correctly.
* This should finally fix ticket #6454, but I keep it open until it's confirmed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38365 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cb99c9153bc897faeb40947d7230a0d02a93ef1b 25-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* The KDL command "udp_endpoints" did not work anymore, since
DatagramSocket::AvailableData() locks; introduced a UdpEndpoint::Dump() method
to work around that.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38355 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7e046eab3b4b605f10f825af03c04f9b7faad291 17-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* UDP really wanted to make sure that the error buffer was freed, and just did
it once more. This should be the final nail on bug #6446.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38178 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3f2a18bd3008941d903371f911c0e259f77ab1d4 16-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* The UDP protocol was deleting a received error buffer twice in the case that
everything went okay. This finally fixes #6446.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38145 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2b4154458a820aa0b55b2800de9f0a13ea6ec1e2 04-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Finished groundwork on ICMP by introducing a completely protocol agnostic
error mechanism.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37896 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2651e51d92770a979fee2e99c4a4b27c3ac03e82 02-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Renamed net_datalink_module::send_data() to send_routed_data(), and
send_datagram() to send_data().
* Renamed DatagramSocket::SocketEnqueue() to EnqueueClone(), SocketDequeue()
to Dequeue().
* Ordered the methods in ProtocolUtilities.h according to their declaration.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37870 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca215dfe683e040f0a44917f26cef0d7d439e59a 02-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Replaced more occurences of EOPNOTSUPP with B_NOT_SUPPORTED.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37847 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61729d9323a555b9025ef6ebeb85dc1627f8acf7 28-Jul-2010 Axel Dörfler <axeld@pinc-software.de>

* Reworked the complete stack to allow more than one address per network
interface - this caused quite a number of changes.
* Network interfaces, and its addresses are now reference counted (not yet
complete, though, InterfaceAddresses need to hold references to their
interface as well).
* There are two known regressions of this commit that I will fix later:
- you cannot remove interfaces anymore
- IPv4 multicast was broken anyway, but now it's disabled, too.
* Moved a device_interfaces.cpp|h out of interfaces.cpp.
* The datalink layer chain is now instantiated per domain per interface,
not just per interface anymore.
* When a buffer reaches the network layer, it has no known interface yet, ie.
the ipv4|6|whatever modules need to set this manually.
* Added more debug output, and some new debugger commands, the control option
is now printed in clear text.
* Added hash_address() function to the address modules. Added "const" to
set_to_defaults() where needed.
* Fixed net_buffer's restore header functions offset use as reported by Atis.
* Improved buffer dump output, use the domain module to print the address if
available.
* Moved net_buffer::type into the union, as it's not needed by the upper layers
anymore.
* Moved IPv6 specific code from {add|remove}_default_route() to where it
belongs, but disabled it for the time being.
* Completely discarded useless ipv4_datagram module.
* Added ping6 to the build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37794 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2e1729d050a350918bd974d570a82dfcc57784a3 23-Jul-2010 Axel Dörfler <axeld@pinc-software.de>

* Removed _EndpointFor() again; DeliverError() is using _FindActiveEndpoint()
instead, ie. ICMP errors are only forwarded to connected UDP sockets.
* Also notify the DatagramSocket's dequeue loop if an error occurs - this makes
udp_unreachable finally work as intended.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37714 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2bb43d824636dd9a5589d6bb42f39f3eadeac758 21-Jul-2010 Axel Dörfler <axeld@pinc-software.de>

* First (untested) steps into ICMP support for UDP: we should send port
unreached ICMP messages now, and at least signal an error to select() (there
is no mechanism yet to actually forward the error to userland).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37651 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8d1485fa06b26cb13b0417e3cdafd5b45520a567 19-Jul-2010 Axel Dörfler <axeld@pinc-software.de>

Work in progress commit by Atis Elsts (I'm posting his ChangeLog comments
directly here), I made only a few style changes:
* introduced 'has_broadcast_address' field in
struct net_address_module_info
- REVIEW: the name, and the status of this field for UNIX and L2CAP
families
* ipv6 address family support
* ipv6 address printing
* ipv6 protocol support
* ipv6 multicast support
- TODO: add and remove multicast routes in a more proper way
- TODO: support MLD
* ipv6 datalink protocol support
* icmpv6 protocol support (EchoRequest and EchoResponse messages)
* ipv6 neigbor discovery protocol support
(Advertisement and Solicitation messages)
- TODO: only the very basic support is present,
the protocol state machine is by no means completed
- TODO: replying to Solicitation does not work too good ATM
(visible, when pinging Haiku from outside)
* added Jenkin's hash algorith
* minor changes in existing IPv4 code - cleanup function
ipv4_get_loopback_address(), written by myself
* add tests: raw, udp, tcp/udp, mullicast sender
* add 'hoplimit' field in struct net_buffer
- TODO: this is just a hack, more generic approach would be better.
* add 'receive_data' function pointer in
struct net_datalink_protocol_module_info
- TODO: this is also more like a hack, to support information
passing from ICMPv6 to IPv6_datagram level.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37604 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56f097ebd91d9b6369407d2bbfcc19718788d182 12-Apr-2010 Oliver Tappe <zooey@hirschkaefer.de>

Applying patch by Atis Elsts:
* fix connecting to INADDR_ANY work for tcp (effectively will
connect to INADDR_LOOPBACK)
* add same behaviour to udp
* move some ipv4-specific code out of tcp into ipv4 address module
* bind() and connect() now reject addresses from non-matching
families
* myself: minor cleanup in udp.cpp with respect to 80 chars limit
Closes #5716 - many thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36192 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4e45de0e5f58b5a31ea1b56105c6e60467f09df6 10-Jan-2010 Oliver Tappe <zooey@hirschkaefer.de>

* when connect()ing an UDP socket, we need to set the local address to the
default address of the outgoing interface as a side-effect


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34989 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5147963dcd57fefa4f63c484eb88e9eaf4002976 26-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

headers/private/kernel/util/OpenHashTable.h, Hugo's version, is a bit nicer than
Tracker's OpenHashTable.h which it should eventually replace. We've renamed the
class to BOpenHashTable and changed the interface slightly so that HashTableLink
became superfluous.
Adapted all the code that used it. Since the OpenHashTables no longer clash,
this should fix the GCC4 build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31791 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 78888c44da518b5a28135c7b3e79013e283789d4 15-Jul-2009 Axel Dörfler <axeld@pinc-software.de>

Applied patch by Ma Jie adding functionality needed by mDNSResponder:
* added new protocol method process_ancillary_data_no_container() that does not
need a container to fill the cmsghdr data.
* Added support for the IP_RECVDSTADDR option using this call.
* Implemented support for IP_MULTICAST_IF.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31585 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9871124eb2ceffad94e7c5bb54b9dd25250f8cb1 17-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Added missing hooks with a description of what's missing for clarity.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31077 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d0eaec308617fe6623df22fb2e41308517c5d7cb 01-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Fix more operator precedence errors. These do not do what you'd expect at first
sight. The comparison operator takes precedence over the binary ones.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29121 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fb3e35fcec1ef41b413b3b121764509f436dee4d 22-Jan-2009 Michael Lotz <mmlr@mlotz.ch>

Fixing all headers/namespaces/name lookup problems that hinder a GCC 4.3.2
build. I sure hope that this doesn't break the build for anyone else.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28992 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f861e599f5c85c60d989c6e64c7f671dd6ad85ec 10-Jan-2009 François Revol <revol@free.fr>

typo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28870 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9e05183977f2e7cd320b86ea1d4adf82588d69d6 19-Jul-2008 Oliver Tappe <zooey@hirschkaefer.de>

* some minor cleanups and clarifications
* dropped tracing of udp-header


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26518 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 276aa463efb0cc5b6562c46b540c01df679f77ba 24-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Replaced the useless InitCheck() method in {Open,Multi}HashTable (it
always returned B_OK) by a Init() method, which sets the initial size
and returns an error, if that fails.
* Adjusted code using the classes accordingly. Replaced a few
InitCheck() methods in the network code by Init().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26127 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2b07b8e0f1a7f1e76f31db24a21a42cbb01d7b9c 28-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Replaced all instances of benaphores in the kernel code by mutexes.
* Removed kernel benaphores.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25690 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6f58064f104ef231faed3c2259885065c4242eaa 07-Feb-2008 Axel Dörfler <axeld@pinc-software.de>

* Added flags field in net_protocol_module_info; there is currently a single
defined flag: NET_PROTOCOL_ATOMIC_MESSAGES.
* socket_send() now honours NET_PROTOCOL_ATOMIC_MESSAGES and returns either
EMSGSIZE if the data to be send is larger than net_socket::send::buffer_size,
or divides the data in appropriately sized chunks.
* This fixes sending >=64K over a TCP socket at once (TCP would just have
returned an error in that case).
* TCP now overrides the default send buffer size (to 32768 for now).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23915 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 84052230379abf8e556e20e499d9a6040157f4a6 31-Jul-2007 Axel Dörfler <axeld@pinc-software.de>

axeld+bonefish: Got rid of the ParentType in the HashTableDefinition; it doesn't really
belong there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21766 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 119c6cdd0b754bd48ee1bb7b945bb02ffaa43fd3 14-Jul-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Use the AutoLocker defined by the super class.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21609 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a1deb55ef50ae33e7533745d8a37891ddd6c885b 23-May-2007 Hugo Santos <hugosantos@nowhere.fake>

net_interface_private: added receive queue and splited device reading from packet processing. Delivering to self no longer is executed in the sender's context, which had some problems with TCP's locking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21214 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 79a0d25245275ef5f65afd610279dc9befffd65e 22-May-2007 Hugo Santos <hugosantos@nowhere.fake>

net_buffer: preparing for better metadata management


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21210 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 45b5203b786a318040f09aafd9b7d86877d30fe9 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

network stack: getsockopt/setsockopt are no longer optional for protocols, as suggested by Axel.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21085 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f6cfc5af194a8f078022f793a00712d925d44984 02-May-2007 Hugo Santos <hugosantos@nowhere.fake>

set ValueIterator's fIndex to the next slot so OpenHashTable's Iterator properly gets it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20974 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0086fe209526a3e9d0f89e58484bf4370e324160 30-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# cf5d9f4b8d5ecfccb07ded3eee4c3af0e11c53b6 29-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

added 'udp_endpoints' debugger command.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20908 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4e8a1b331fd4aafb8fb018bb23e85b8945f41d67 28-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

miniature cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20874 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 727ad0b0a5bd0ba327940e25a92917411fcfb431 27-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

completed UDP's locking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20857 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40bbf8600ec2574a1e33ae7a0f2bfbdbe426cf7b 27-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 5084c83901d6e5e4214512211b5e86d5c63926bd 27-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

addressed Axel's suggestion regarding SocketAddress' GetPort() name.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20851 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 25a2744f9e983bf304d65b284506fc7b6136a394 27-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

adapted UDP to use AddressUtilities, for readability.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20850 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c72ab92d8498f0787c3d6e1f9e5b72e03cd5e2a1 27-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 53f23f85a2725c8fc31c7a874256084c7c623d86 25-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

partially rewrote TCP's endpoint manager. Fixes #1173


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20814 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2445c00e6420e2b365cba47c758b66fc04e75f59 19-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# d5b5a2c2f8c70f0e24cdf2e3a7fc9c4faa22e4c3 15-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

introduced Checksum::PseudoHeader helper.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20717 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1408d1f0ce8555b9b94037e6f1c9c530afe753b6 15-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 6a60618094d288e845e7384ec6ab5b4e63f742e5 15-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 4229d7091edcd319ba893a3816e5a077871218cc 14-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 49f3c71e21b3b4f09905bf967b84e909fa24cd2b 13-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# 658a550639d1b3ec33c934583d065c81bee46298 13-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

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


# d438fa4c124c7dd113ccfb6f9badae5d18354af0 12-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

added buffer, datalink and socket module references to the stack module so we don't have to load them in each other module.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20673 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bfb45f717c648c5cd68e84c8ca1f805d099ba3c5 12-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

introduced a new helper class DatagramSocket which provides a consistent base interface and functionality for the implementation of datagram-based sockets.

- made the ipv4 raw, udp and link protocols use DatagramSocket.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20672 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bf48e753d7c87ff1a38913f0117f6653bbac2bb1 12-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

made UDP agnostic to the underlying network protocol (preparing some work into the future).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20661 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6c35350908905903b5c150154b0da9698ca8943a 11-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

moved address selection logic to a new 'get_buffer_route'.

- IPv4 now assumes the addresses it is supplied in send_routed_data are already the appropriate ones.
- made the Data(), operator* and operator-> methods in NetBufferFieldReader const so we can use them in the same expression as the constructor.
- fixed an issue with UDP where the wrong source address could be used in the calculating the checksum.
- changed ipv4_print_address to use the more common 0.0.0.0 format.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20660 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 87001e059c8012ef40c462709833b5ae4212fb4a 11-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

some NetBufferUtility revamp.

- introduced base NetBufferFieldReader which deals with obtaining a continuguous field to deal with.
- renamed Detach() to Sync() to better express the fact that we may be writing to the buffer.
- Fixed IPv4's and ICMP's checksum calculation as it assumed the underlying header was contiguous.
- ICMP is now able to reply to ICMP Echo Requests which were split across data nodes.
- in split_buffer(), make sure we were able to trim() the new buffer before damaging the original one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20657 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d86f48f3f5a6ca5039ee8f2190c97906d976f2d1 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

tiny TCP cleanups, move the read notifications to _NotifyReader().

- Also fixed the buffer size check in UDP's SendData() since UDP's length field includes the size of the header we need to check that as well. IPv4 is correct since we check for the size after prepending the header (due to it being possibly already included).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20592 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4168e54af80fe7848dd39aca7c77740087a7603a 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

send buffer size is irrelevant for UDP, instead check if the fed buffer is larger than the maximum payload UDP supported. Do the same in IPV4.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20590 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9e084902c1193d64fb3339e4a1fdcea9821dc42b 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

small cleanups in UDP

- don't set_to_empty_address, instead consider NULL to be the empty address and use is_empty_address().
- most ipv4 address module calls already consider NULL to be the empty address, ipv4_hash_address_pair didn't, fixed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20589 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c3e054c876e5ff3b87126e7937ff8c1d6a7be4c1 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

fixed an issue in UDP due to copying addresses to sockaddr, which may be too small for protocols other than IPv4. In fact, we don't need to copy the addresses at all, we can use the original address pointers in the hash key for lookup and hashing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20588 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0d5afa4decb83fc03232a420d85c7838f70d2266 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

introduced fifo_socket_enqueue_buffer which clones the buffer, enqueues it to the fifo and notifies the socket.

- changed the link, ipv4 and udp modules to use fifo_socket_enqueue_buffer


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20587 a95241bf-73f2-0310-859d-f6bbb57e9c96


# abe1ec18ac0e70d36b0cc595fc176ea4dd9df818 05-Apr-2007 Hugo Santos <hugosantos@nowhere.fake>

properly support MSG_TRUNC. we don't even have to trim the buffer, just try to fill the user buffers as much as possible


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20582 a95241bf-73f2-0310-859d-f6bbb57e9c96


# af3a31f770fcd8b7e8c5171342cba155bef6dc9e 01-Jan-2007 Axel Dörfler <axeld@pinc-software.de>

Calmed down the networking stack a lot - since it basically works, there is no
reason to slow it down with debug output that much; this will also help investigating
some issues where you just aren't interested in most of the output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19672 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c35b04de314ab7f18763546366ea30eb8ae53997 02-Nov-2006 Axel Dörfler <axeld@pinc-software.de>

* Moved the TCPConnection class into its own file.
* Added some missing result checks, mostly for allocations.
* Fixed a wrong precendence with the ?: operator
* Some minor cleanup.
* Renamed sBufferModule to gBufferModule - the header expects it to be a global,
so it should be named like one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19178 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a7028ce6802b20c7fea03c8b4defa0770a50b850 06-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

* Implemented select support for sockets and notifications, not yet tested, though;
this closes ticket #811.
* Added notification support to IPv4 and UDP.
* Implemented reading out SO_ERROR.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19017 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 891a127fecd553cc2168db11ccc564f5ba38fad6 17-Sep-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

various gcc 4 related build fixes


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18876 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c22d69bf1f5f60f7ebddd79108a53c8f97f300fe 08-Aug-2006 Axel Dörfler <axeld@pinc-software.de>

* Completed the previous commit and merger of the team/network/new_stack branch.
* Removed ppp_up and pppcontrol from the image for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18457 a95241bf-73f2-0310-859d-f6bbb57e9c96