#
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.
|
#
6c5757ee |
|
22-Sep-2011 |
Clemens Zeidler <clemens.zeidler@googlemail.com> |
Check if the socket has been created successfully. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42766 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a8e3ae78 |
|
22-Sep-2011 |
Clemens Zeidler <clemens.zeidler@googlemail.com> |
Switch to BWeakReference class. Hope this does not break anything. Calling virtual destructur on a struct should work fine, right? git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42764 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
756b64fd |
|
16-Dec-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Removed the obsolescent [B]Reference[able] API and replaced the remaining uses. Fixes the gcc 2 acpi build. * Renamed WeakReferenceable::{Add,Remove}Reference() to {Acquire,Release}Reference() for consistency. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39871 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
89bf19cc |
|
27-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Made an uint32 out of net_socket::bound_to_device. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38395 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1e4feb53 |
|
27-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Added some optional debug output. * Check for errors using != instead of < - the functions are not supposed to return anything above B_OK. * Use the stack-wide ENABLE_DEBUGGER_COMMANDS instead of our own local solution. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38386 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dc660d32 |
|
04-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Call put_domain_protocols() without having the socket locked. This fixes bug #5210. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37895 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
edf10183 |
|
02-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed a superfluous check. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37851 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
|
#
845a29a0 |
|
02-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* B_SELECT_{READ|WRITE|ERROR} are no flags fields, so they cannot be or'ed. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37834 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
988d8d40 |
|
23-Jul-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* If an error is notified, also forward the even to read/write. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37713 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f8288ec7 |
|
15-Dec-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Made sure the sockaddr::sa_len field is set correctly for sendto(), and connect(). * This fixes not working connections whenever the incoming sa_len field happened to be zero. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34669 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
|
#
f54023cf |
|
28-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Propagate error codes in FIONREAD. Fixes bug #3973. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30896 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2ae482f5 |
|
17-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Implement the FIONREAD ioctl for sockets. We already supported it in userland but the kernel part was missing. It is used to query for the buffer size that can be retrieved using recv(). It returns the same value we use for the read select(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30786 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9431509f |
|
30-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed broken socket_get_next_stat() that was responsible for bug #3830. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30500 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6f440aed |
|
24-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* net_socket_module_info::acquire_socket() now returns whether or not the socket could be acquired, ie. when its reference count is 0, it cannot be acquired anymore. This requires the protocol to do proper locking, though. * The TCP EndpointManager now checks the return value of acquire_socket(), and only returns the endpoint if that succeeded. * This fixes bug #2197. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30363 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
22e78d6e |
|
15-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Another error found by Romain: the socket's mutex could be destroyed twice in socket_create(). Thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30201 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7caa5d43 |
|
16-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Now gets the net_socket module in init_stack() to make sure it's initialized as long as the stack is loaded. * This fixes another regression from moving the socket API into the kernel. * Thanks to Romain for reporting this! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30198 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ddd83030 |
|
16-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Added "is_in_socket_list" member to determine whether the socket is in the sSocketList or not (to see if it has to be removed when the socket is deleted). * This fixes the bug reported by Romain when trying to open an unsupported protocol (like AF_INET6). Thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30188 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8aa910b9 |
|
08-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Added missing SO_TYPE. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30032 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6fc2d92b |
|
08-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed the buggy GCC4 work-around. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30017 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9b4cfa9d |
|
07-Apr-2009 |
François Revol <revol@free.fr> |
This fixed gcc4 build (overloaded == operator...) though I'm not sure it's what was meant. Please check. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30008 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
42d0ef6f |
|
07-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* dump_socket() now also prints the actual parent again (not just its WeakPointer). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30003 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
11112327 |
|
07-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Sockets now inherit from WeakReferenceable. * This fixes the problem when a socket changes something with regards to its parent. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30000 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ab134c0a |
|
06-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* socket_delete() now also supports deleting children that still have a parent; added a potentially dangerous TODO, though (will look into this tomorrow). * Improved output of the KDL command, and also include the child sockets in the list. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29986 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
293e82ab |
|
06-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Added KDL commands to inspect sockets ("socket", and "sockets"). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29984 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b32dfac5 |
|
06-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Now uses DoublyLinkedList instead of the struct list C stuff. * Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29981 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
77817877 |
|
04-Nov-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28500 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
27e0dea9 |
|
11-Oct-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Actually implemented the SO_BINDTODEVICE socket option I added some time ago. * This makes it possible to select a specific device, even if no interface has been configured for it yet. To make it work, each interface now has a private direct route which will be returned if a socket is bound to a device. * This will be used for example in DHCP to make it work when more than one adapter is attached. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27983 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
|
#
cdc00dad |
|
02-May-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added optional {send,read}_data_no_buffer() hooks to the protocol module interface. They directly operate on iovecs and thus allow protocols that don't need it to avoid the creation of a net_buffer. * Adjusted the socket module to support the new hooks. If they are present, they will be chosen over the old hooks. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25299 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
49e00d1f |
|
02-May-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Moved the container management for ancillary data from the net_buffer module to the stack module. There's a dedicated struct ancillary_data_container, now. One can just set the container on a net_buffer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25292 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e9488bd9 |
|
29-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Removed bogus select notifications in socket_close(). This is really not necessary, since the VFS makes sure (or should at least) that all events are deselected when close() is called. ~0 isn't a valid event anyway. * Removed delete_select_sync_pool() in socket_free(). It's not necessary, since the select_sync_pool is auto-destroyed when the last event has been deselected (which the VFS should take care of). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25265 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5843f17c |
|
23-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
When splitting the send request into multiple buffers, we must succeed after we have successfully sent the first buffer, even if not a single byte of some following buffer could be sent. We should probably even succeed whatever the error code -- not sure what is the reason for only doing that for B_WOULD_BLOCK and B_INTERRUPTED. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25121 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
97cdbb54 |
|
12-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added support for sending/receiving ancillary data. The protocol modules have two more optional hooks for attaching supplied ancillary data to a net_buffer and for processing received ancillary data. Not sure, if that is flexible enough for all kinds of ancillary data, but it is for SCM_RIGHTS and also should for SCM_CRED[ENTIAL]S (if we ever decide to implement one of those) -- don't know any other types on other protocol levels. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24941 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
75015ff5 |
|
11-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Renamed THREAD_FLAGS_IOCTL_SYSCALL to THREAD_FLAGS_SYSCALL, syscall_restart_ioctl_is_restarted() to syscall_restart_is_restarted, IoctlSyscallFlagUnsetter to SyscallFlagUnsetter, and IoctlSyscallRestartWrapper to SyscallRestartWrapper, as they are no longer only used for ioctl(). * Removed unused syscall_restart_ioctl_handle_post(). * Made SyscallRestartWrapper a lot fancier. Instead of storing a reference to the result value, it stores the value itself, and it features all the interesting operators that make it appear like that value. This simplifies the use of the class quite a bit. * THREAD_FLAGS_SYSCALL is now set for all socket function and the read[v](), write[v]() syscalls. * Added is_syscall() function and net_stack hook to the net stack. * Removed "kernel" parameter from all net_stack_interface and net_socket module hooks. They aren't need any longer, since is_syscall() can be used instead. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24914 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
df50f7a9 |
|
10-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Changed the way the socket functions work: - The net_stack driver is no longer used. Instead we have a kernel module which is directly used by syscall implementations in the kernel. I.e. we no longer tunnel those functions through ioctls, but have normal syscalls. - Removed the superfluous net starter module. - Implemented the FDTYPE_SOCKET type file_descriptors, that is sockets are no longer vnode based. - Adjusted libnetwork (the socket function implementations) accordingly. - Adjusted netstat accordingly. * Socket module: - Implemented socketpair(). - Added "kernel" parameter to the control hook. Quite a few more hooks would actually need the parameter, but I didn't change those yet, since that would probably also require changes to the protocol module interface. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24908 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0db772c9 |
|
21-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* When deleting a socket, we also need to delete all of its children. * This fixes a KDL I often seen when launching firefox. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24046 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
|
#
15ab0bcf |
|
21-Oct-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* int32_t, uint32_t are now of type "int", and no longer of type "long". This should help to reduce the number of warnings imported code will throw during compilation (helps a lot with tcpdump, for example). * Since long is 64 bit on 64 bit platforms, we might want to think about doing that change for the Haiku types int32 and uint32 as well. * Fixed several occurences of hidden type problems. * Fixed build of the stack and TCP under BeOS. * Fixed incorrect typedef in socket_interface.h. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22643 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
636bfc08 |
|
02-Oct-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Renamed fs/vfs_select.cpp to wait_for_objects.cpp and got rid of vfs_select.h, respectively moved most of it into the new kernel private header wait_for_objects.h. * Added new experimental API functions wait_for_objects[_etc](). They work pretty much like poll(), but also for semaphores, ports, and threads. * Removed the "ref" parameter from notify_select_events() and the select_sync_pool functions as well as from fd_ops::fd_[de]select(). It is no longer needed. The FS interface select() hook still has it, though -- the VFS will always pass 0. * de]select_fd() take a select_info* instead of a select_sync* + ref pair, now. Added respective functions for semaphores, ports, and threads. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22416 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f5a92f59 |
|
04-Jul-2007 |
Axel Dörfler <axeld@pinc-software.de> |
Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21550 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
|
#
73f1548b |
|
30-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
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
|
#
57967505 |
|
29-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
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
|
#
66a4a428 |
|
25-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
added Recv-Q/Send-Q output to netstat. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20819 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
|
#
8107b194 |
|
09-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
Fixed some more TCP issues. - Properly flag sockets using non-blocking connects() when in SYN SENT. - and when in LISTEN, we should use the socket's connection queue size. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20631 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a5e90266 |
|
05-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
copy back the source address even when the data is truncated git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20586 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
485a82e6 |
|
05-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
as per the Open Group Specification, MSG_TRUNC should be set in flags whenever the packet is truncated git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20583 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
|
#
17b77c3b |
|
05-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
consolidate all RECV/SEND ioctls into a single RECEIVE/SEND pair - changed the socket module to use thew new RECEIVE/SEND in all forms of recv() and send() - changed libnetwork to use the new RECEIVE/SEND - remove transfer_args processing from strace since the structure was removed git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20581 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c96b101d |
|
04-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
net_socket: make recvfrom() use recvmsg() and sendto() use sendmsg() for code reusal git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20565 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
72455333 |
|
04-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
some fixes to recvmsg() and sendmsg() git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20563 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dae7f8ea |
|
04-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
initial recvmsg and sendmsg implementations git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20562 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
de8a7c26 |
|
08-Jan-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* Introduced a reader_thread member to the private net_device_interface. * When shutting down an interface, we now wait until its reader thread is gone, too; this is necessary in case the kernel unloads the networking stack before the reader thread had a chance to exit. * Added some debug output to net_socket in case you ask for unknown options. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19741 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4684dfec |
|
31-Dec-2006 |
Axel Dörfler <axeld@pinc-software.de> |
socket_connected() now notifies waiting selects(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19662 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
79608a2d |
|
18-Dec-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Moved some private members of net_socket into the new net_socket_private structure. * Added an "owner" field that stores the team which created the socket (for netstat only); we would need a different storage for SIGURG if we ever want to support that. * Improved netstat address output: now prints "*" instead of INADDR_ANY. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19562 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8dfd7ea7 |
|
18-Dec-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Implemented a basic infrastructure for a netstat command. * Started a netstat command. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19560 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5869c1e7 |
|
04-Dec-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* sending now detect partial writes and does not return an error in that case. * writev() now also calls bind() if needed. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19428 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f4b92156 |
|
04-Dec-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Don't hold the socket's lock when calling socket_read_avail() or socket_send_avail(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19423 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
94fb808a |
|
30-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* socket_spawn_pending() forgot to set the socket's parent field. * socket_recv[from]() now accept a NULL buffer in case there was nothing to read. * the tcp_tester's server thread now actually reads the data it receives. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19400 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
41c67263 |
|
30-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Moved the starting of the network stack into the driver (from the socket module) to allow other protocols (like TCP) using the socket module. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19399 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7c0541c1 |
|
25-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Build fix; I obviously forgot to compile the stack itself after the changes :-/ git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19368 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a6271189 |
|
24-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Added support for setting/getting: SO_NONBLOCK, SO_RCVTIMEO, SO_SNDTIMEO, SO_RCVLOWAT, and SO_SNDLOWAT. Lowered the default buffer size to be within the uint16 size. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19367 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ead36a7e |
|
11-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
The pending/connected connection lists were not initialized. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19258 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b70a062d |
|
11-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Separated create_socket() and the call to the protocol's open() function - open() is not supposed to be called for accepted sockets, only for those created via a call the userland socket() function. * Renamed net_socket_module_info::socket() to open_socket() to make this distinction a bit clearer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19254 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d2021d57 |
|
10-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Took Philippe's hints into account - we now do some locking in socket_spawn_pending() :-) * Also take the max backlog into account as set by listen() - but reserve a little extra room for never completing connections, and that listen(..., 0) always accepts at least a single connection (as the BSDs do). * Spawned connections won't accept new connections, so SO_ACCEPTCONN must be cleared. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19248 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
44b3faaa |
|
10-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
socket_accept() now checks for SO_ACCEPTCONN before calling the protocol's accept function to enforce valid codepaths (you need to call listen() before accept()). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19247 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1a0e92a3 |
|
09-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented backlog/pending connection support to the sockets - while currently only TCP needs this, other stream oriented protocols might too, in the future. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19236 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ee50138f |
|
06-Oct-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Now notifies all pending selects when closing the socket. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19018 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
|
#
340cd7be |
|
10-Aug-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* socket_getsockopt() now supports all boolean SO_* options as well. * socket_listen() now sets the SO_ACCEPTCONN flag if it succeeds. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18476 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
943cedf7 |
|
10-Aug-2006 |
Axel Dörfler <axeld@pinc-software.de> |
setsockopt() now understands all boolead options. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18475 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
|
#
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.
|
#
6c5757eedb36fdd43e79d0f457e2f254425a235d |
|
22-Sep-2011 |
Clemens Zeidler <clemens.zeidler@googlemail.com> |
Check if the socket has been created successfully. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42766 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a8e3ae78c9780541136e3631b59adb8f2aa1f388 |
|
22-Sep-2011 |
Clemens Zeidler <clemens.zeidler@googlemail.com> |
Switch to BWeakReference class. Hope this does not break anything. Calling virtual destructur on a struct should work fine, right? git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42764 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
756b64fd836dad5b63f41f0b01f8cedfec795f9d |
|
16-Dec-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Removed the obsolescent [B]Reference[able] API and replaced the remaining uses. Fixes the gcc 2 acpi build. * Renamed WeakReferenceable::{Add,Remove}Reference() to {Acquire,Release}Reference() for consistency. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39871 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
89bf19ccde93f9bcf3f965abdcdcac26f519d9b9 |
|
27-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Made an uint32 out of net_socket::bound_to_device. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38395 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1e4feb533eef449723a829eb8cc9d704358daff6 |
|
27-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Added some optional debug output. * Check for errors using != instead of < - the functions are not supposed to return anything above B_OK. * Use the stack-wide ENABLE_DEBUGGER_COMMANDS instead of our own local solution. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38386 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dc660d32efa4957ad3ab2b394498d051c25d58fd |
|
04-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Call put_domain_protocols() without having the socket locked. This fixes bug #5210. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37895 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
edf1018372be202f7c489c9b9a9b49021e0c3551 |
|
02-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed a superfluous check. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37851 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
|
#
845a29a0548e12d405ca6ba3d86d9d5e5ee19e30 |
|
02-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* B_SELECT_{READ|WRITE|ERROR} are no flags fields, so they cannot be or'ed. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37834 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
988d8d4088db4b7d73bd1f8641a53b20f3a411a3 |
|
23-Jul-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* If an error is notified, also forward the even to read/write. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37713 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f8288ec75c70a031af1c778fc16664e69dad0ec5 |
|
15-Dec-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Made sure the sockaddr::sa_len field is set correctly for sendto(), and connect(). * This fixes not working connections whenever the incoming sa_len field happened to be zero. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34669 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
|
#
f54023cf37881aa7859b9717576821676211e07c |
|
28-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Propagate error codes in FIONREAD. Fixes bug #3973. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30896 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2ae482f58221463e2b58752696085d0881fecda7 |
|
17-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Implement the FIONREAD ioctl for sockets. We already supported it in userland but the kernel part was missing. It is used to query for the buffer size that can be retrieved using recv(). It returns the same value we use for the read select(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30786 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9431509f5c1c661a6f6f4665198f5d3b24826d9d |
|
30-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed broken socket_get_next_stat() that was responsible for bug #3830. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30500 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6f440aed2ce4661713c3ac19a16bfdceaeccbeb4 |
|
24-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* net_socket_module_info::acquire_socket() now returns whether or not the socket could be acquired, ie. when its reference count is 0, it cannot be acquired anymore. This requires the protocol to do proper locking, though. * The TCP EndpointManager now checks the return value of acquire_socket(), and only returns the endpoint if that succeeded. * This fixes bug #2197. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30363 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
22e78d6e65fb5321d86a906c4e2a761cb0c0db4d |
|
15-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Another error found by Romain: the socket's mutex could be destroyed twice in socket_create(). Thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30201 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7caa5d430cc528b48b62888aeb7fd445f712d8cd |
|
16-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Now gets the net_socket module in init_stack() to make sure it's initialized as long as the stack is loaded. * This fixes another regression from moving the socket API into the kernel. * Thanks to Romain for reporting this! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30198 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ddd8303099fe840501790b342b027ba344b1071a |
|
16-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Added "is_in_socket_list" member to determine whether the socket is in the sSocketList or not (to see if it has to be removed when the socket is deleted). * This fixes the bug reported by Romain when trying to open an unsupported protocol (like AF_INET6). Thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30188 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8aa910b94c650c7a53823fe3c13d40813cc2fd2a |
|
08-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Added missing SO_TYPE. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30032 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6fc2d92bd301bda6584a00c6f5bd7680ec433ca8 |
|
08-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed the buggy GCC4 work-around. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30017 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9b4cfa9d3b27c8068753791e77ed110ed0cb438a |
|
07-Apr-2009 |
François Revol <revol@free.fr> |
This fixed gcc4 build (overloaded == operator...) though I'm not sure it's what was meant. Please check. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30008 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
42d0ef6fe4ff6cb2da56d87494af94afbaa8f420 |
|
07-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* dump_socket() now also prints the actual parent again (not just its WeakPointer). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30003 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1111232758bd76e4ce4e7f6daddd7334249db818 |
|
07-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Sockets now inherit from WeakReferenceable. * This fixes the problem when a socket changes something with regards to its parent. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30000 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ab134c0a9a545b324e2ce88728e60bb1d49dfa23 |
|
06-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* socket_delete() now also supports deleting children that still have a parent; added a potentially dangerous TODO, though (will look into this tomorrow). * Improved output of the KDL command, and also include the child sockets in the list. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29986 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
293e82ab1d0c95fb1a157911f40fb652e3368905 |
|
06-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Added KDL commands to inspect sockets ("socket", and "sockets"). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29984 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b32dfac5f4460ccb498d2584ba16f29b9b9f543a |
|
06-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Now uses DoublyLinkedList instead of the struct list C stuff. * Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29981 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
77817877ce62981aaa259eb1af16754ca972ba89 |
|
04-Nov-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28500 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
27e0dea9f0bbc7db87e04d09fa707f8790575918 |
|
11-Oct-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Actually implemented the SO_BINDTODEVICE socket option I added some time ago. * This makes it possible to select a specific device, even if no interface has been configured for it yet. To make it work, each interface now has a private direct route which will be returned if a socket is bound to a device. * This will be used for example in DHCP to make it work when more than one adapter is attached. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27983 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
|
#
cdc00dadfc37de5c4c37a45e90ec2e61633d7f60 |
|
02-May-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added optional {send,read}_data_no_buffer() hooks to the protocol module interface. They directly operate on iovecs and thus allow protocols that don't need it to avoid the creation of a net_buffer. * Adjusted the socket module to support the new hooks. If they are present, they will be chosen over the old hooks. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25299 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
49e00d1f99fa525355674427039e360eb96c574b |
|
02-May-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Moved the container management for ancillary data from the net_buffer module to the stack module. There's a dedicated struct ancillary_data_container, now. One can just set the container on a net_buffer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25292 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e9488bd9e62d599cc4905ff3a1af0fdb9932be04 |
|
29-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Removed bogus select notifications in socket_close(). This is really not necessary, since the VFS makes sure (or should at least) that all events are deselected when close() is called. ~0 isn't a valid event anyway. * Removed delete_select_sync_pool() in socket_free(). It's not necessary, since the select_sync_pool is auto-destroyed when the last event has been deselected (which the VFS should take care of). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25265 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5843f17cb8553357042a00ebbf28256498778b8d |
|
23-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
When splitting the send request into multiple buffers, we must succeed after we have successfully sent the first buffer, even if not a single byte of some following buffer could be sent. We should probably even succeed whatever the error code -- not sure what is the reason for only doing that for B_WOULD_BLOCK and B_INTERRUPTED. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25121 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
97cdbb548e22a4e467360b8e7d850f13ab5ff9be |
|
12-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added support for sending/receiving ancillary data. The protocol modules have two more optional hooks for attaching supplied ancillary data to a net_buffer and for processing received ancillary data. Not sure, if that is flexible enough for all kinds of ancillary data, but it is for SCM_RIGHTS and also should for SCM_CRED[ENTIAL]S (if we ever decide to implement one of those) -- don't know any other types on other protocol levels. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24941 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
75015ff525050d1d716f499732c566956c6078ad |
|
11-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Renamed THREAD_FLAGS_IOCTL_SYSCALL to THREAD_FLAGS_SYSCALL, syscall_restart_ioctl_is_restarted() to syscall_restart_is_restarted, IoctlSyscallFlagUnsetter to SyscallFlagUnsetter, and IoctlSyscallRestartWrapper to SyscallRestartWrapper, as they are no longer only used for ioctl(). * Removed unused syscall_restart_ioctl_handle_post(). * Made SyscallRestartWrapper a lot fancier. Instead of storing a reference to the result value, it stores the value itself, and it features all the interesting operators that make it appear like that value. This simplifies the use of the class quite a bit. * THREAD_FLAGS_SYSCALL is now set for all socket function and the read[v](), write[v]() syscalls. * Added is_syscall() function and net_stack hook to the net stack. * Removed "kernel" parameter from all net_stack_interface and net_socket module hooks. They aren't need any longer, since is_syscall() can be used instead. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24914 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
df50f7a9b4b0bbe77413d722875b0a346c61d527 |
|
10-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Changed the way the socket functions work: - The net_stack driver is no longer used. Instead we have a kernel module which is directly used by syscall implementations in the kernel. I.e. we no longer tunnel those functions through ioctls, but have normal syscalls. - Removed the superfluous net starter module. - Implemented the FDTYPE_SOCKET type file_descriptors, that is sockets are no longer vnode based. - Adjusted libnetwork (the socket function implementations) accordingly. - Adjusted netstat accordingly. * Socket module: - Implemented socketpair(). - Added "kernel" parameter to the control hook. Quite a few more hooks would actually need the parameter, but I didn't change those yet, since that would probably also require changes to the protocol module interface. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24908 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0db772c9371eaaf42affeb38a2386fb9589fc0c9 |
|
21-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* When deleting a socket, we also need to delete all of its children. * This fixes a KDL I often seen when launching firefox. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24046 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
|
#
15ab0bcf01ef7bd7323d9b2da55906bafbb40fd3 |
|
21-Oct-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* int32_t, uint32_t are now of type "int", and no longer of type "long". This should help to reduce the number of warnings imported code will throw during compilation (helps a lot with tcpdump, for example). * Since long is 64 bit on 64 bit platforms, we might want to think about doing that change for the Haiku types int32 and uint32 as well. * Fixed several occurences of hidden type problems. * Fixed build of the stack and TCP under BeOS. * Fixed incorrect typedef in socket_interface.h. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22643 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
636bfc08aeaaa7f1bab813c5aa2e8e666b40ec64 |
|
02-Oct-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Renamed fs/vfs_select.cpp to wait_for_objects.cpp and got rid of vfs_select.h, respectively moved most of it into the new kernel private header wait_for_objects.h. * Added new experimental API functions wait_for_objects[_etc](). They work pretty much like poll(), but also for semaphores, ports, and threads. * Removed the "ref" parameter from notify_select_events() and the select_sync_pool functions as well as from fd_ops::fd_[de]select(). It is no longer needed. The FS interface select() hook still has it, though -- the VFS will always pass 0. * de]select_fd() take a select_info* instead of a select_sync* + ref pair, now. Added respective functions for semaphores, ports, and threads. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22416 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f5a92f59e47a71647d76851c70fc543ed6b1f9d3 |
|
04-Jul-2007 |
Axel Dörfler <axeld@pinc-software.de> |
Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21550 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
|
#
73f1548be1fc6bc5bca6fe7ef4d8514588da8ca3 |
|
30-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
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
|
#
57967505c2947a442e0a1185ab7a3930786787cc |
|
29-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
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
|
#
66a4a428020db4e26cda68ffe4b3dd6f1bed88c2 |
|
25-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
added Recv-Q/Send-Q output to netstat. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20819 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
|
#
8107b1940338a62198e77f9d4c9007f048f00915 |
|
09-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
Fixed some more TCP issues. - Properly flag sockets using non-blocking connects() when in SYN SENT. - and when in LISTEN, we should use the socket's connection queue size. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20631 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a5e902668881dc45ecff2cf7c1dd8ab8b626a8ed |
|
05-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
copy back the source address even when the data is truncated git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20586 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
485a82e6138d43169c89cf93d5789e4d6c912204 |
|
05-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
as per the Open Group Specification, MSG_TRUNC should be set in flags whenever the packet is truncated git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20583 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
|
#
17b77c3b928bee0a1d3daf0022c5157fd7146570 |
|
05-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
consolidate all RECV/SEND ioctls into a single RECEIVE/SEND pair - changed the socket module to use thew new RECEIVE/SEND in all forms of recv() and send() - changed libnetwork to use the new RECEIVE/SEND - remove transfer_args processing from strace since the structure was removed git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20581 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c96b101d4d7b2efd9c64004f20b9ef810bf8284f |
|
04-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
net_socket: make recvfrom() use recvmsg() and sendto() use sendmsg() for code reusal git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20565 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7245533300ddb71bf1ad854a1e64c92d10294c70 |
|
04-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
some fixes to recvmsg() and sendmsg() git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20563 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dae7f8ea467af95879f02fbc4d7dc4d804fea799 |
|
04-Apr-2007 |
Hugo Santos <hugosantos@nowhere.fake> |
initial recvmsg and sendmsg implementations git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20562 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
de8a7c2680a0c9a7bf106f376fb9e5bc0935604e |
|
08-Jan-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* Introduced a reader_thread member to the private net_device_interface. * When shutting down an interface, we now wait until its reader thread is gone, too; this is necessary in case the kernel unloads the networking stack before the reader thread had a chance to exit. * Added some debug output to net_socket in case you ask for unknown options. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19741 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4684dfec2d1f5dd2a1064ce8768a15e782a9ad64 |
|
31-Dec-2006 |
Axel Dörfler <axeld@pinc-software.de> |
socket_connected() now notifies waiting selects(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19662 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
79608a2de794aaba387e90c9daeed3bdced0dfde |
|
18-Dec-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Moved some private members of net_socket into the new net_socket_private structure. * Added an "owner" field that stores the team which created the socket (for netstat only); we would need a different storage for SIGURG if we ever want to support that. * Improved netstat address output: now prints "*" instead of INADDR_ANY. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19562 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8dfd7ea7bf7714ff094a69f120771e6c6465262e |
|
18-Dec-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Implemented a basic infrastructure for a netstat command. * Started a netstat command. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19560 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5869c1e7f35f31a32ffd44a378400e42893e857a |
|
04-Dec-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* sending now detect partial writes and does not return an error in that case. * writev() now also calls bind() if needed. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19428 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f4b9215615558e9a627a1f4a13b40e5e85d34378 |
|
04-Dec-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Don't hold the socket's lock when calling socket_read_avail() or socket_send_avail(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19423 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
94fb808a48e8a9a15392df0a309ee118c6b828f2 |
|
30-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* socket_spawn_pending() forgot to set the socket's parent field. * socket_recv[from]() now accept a NULL buffer in case there was nothing to read. * the tcp_tester's server thread now actually reads the data it receives. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19400 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
41c67263593f5155d5f44e2c66b16ea430012967 |
|
30-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Moved the starting of the network stack into the driver (from the socket module) to allow other protocols (like TCP) using the socket module. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19399 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7c0541c12f717b103c8ca80e16ac9ed2d09b0393 |
|
25-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Build fix; I obviously forgot to compile the stack itself after the changes :-/ git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19368 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a62711893694f50860b7f8f4eab3d644840f789f |
|
24-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Added support for setting/getting: SO_NONBLOCK, SO_RCVTIMEO, SO_SNDTIMEO, SO_RCVLOWAT, and SO_SNDLOWAT. Lowered the default buffer size to be within the uint16 size. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19367 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ead36a7efb8a8db28b838f3fec07524fc96ba459 |
|
11-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
The pending/connected connection lists were not initialized. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19258 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b70a062dc55e021d14e6a7a17bed0aff1d2d5214 |
|
11-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Separated create_socket() and the call to the protocol's open() function - open() is not supposed to be called for accepted sockets, only for those created via a call the userland socket() function. * Renamed net_socket_module_info::socket() to open_socket() to make this distinction a bit clearer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19254 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d2021d5766d139a90b2415fc930247702a670168 |
|
10-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Took Philippe's hints into account - we now do some locking in socket_spawn_pending() :-) * Also take the max backlog into account as set by listen() - but reserve a little extra room for never completing connections, and that listen(..., 0) always accepts at least a single connection (as the BSDs do). * Spawned connections won't accept new connections, so SO_ACCEPTCONN must be cleared. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19248 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
44b3faaa198798c44a9f3bd9a98e5ccda2252fe1 |
|
10-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
socket_accept() now checks for SO_ACCEPTCONN before calling the protocol's accept function to enforce valid codepaths (you need to call listen() before accept()). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19247 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1a0e92a33be1e14561123a9e854d31276b8417fa |
|
09-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented backlog/pending connection support to the sockets - while currently only TCP needs this, other stream oriented protocols might too, in the future. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19236 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ee50138fcd0d6d4e4139d7c57837139c6fd7f55e |
|
06-Oct-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Now notifies all pending selects when closing the socket. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19018 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
|
#
340cd7be3a4bc9f78644888d6194d21bd222c946 |
|
10-Aug-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* socket_getsockopt() now supports all boolean SO_* options as well. * socket_listen() now sets the SO_ACCEPTCONN flag if it succeeds. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18476 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
943cedf784ca021e80067dc978c09a5f31c0e44a |
|
10-Aug-2006 |
Axel Dörfler <axeld@pinc-software.de> |
setsockopt() now understands all boolead options. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18475 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
|