Commit Graph
28 Commits
Author SHA1 Message Date
Hugo Santos 8107b19403 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
2007-04-10 05:28:56 +00:00
Hugo Santos a5e9026688 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
2007-04-05 17:56:09 +00:00
Hugo Santos 485a82e613 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
2007-04-05 16:09:06 +00:00
Hugo Santos abe1ec18ac 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
2007-04-05 16:05:07 +00:00
Hugo Santos 17b77c3b92 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
2007-04-05 14:26:46 +00:00
Hugo Santos c96b101d4d 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
2007-04-04 19:42:53 +00:00
Hugo Santos 7245533300 some fixes to recvmsg() and sendmsg()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20563 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-04 19:17:04 +00:00
Hugo Santos dae7f8ea46 initial recvmsg and sendmsg implementations
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20562 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-04 17:39:43 +00:00
Axel Dörfler de8a7c2680 * 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
2007-01-08 15:41:56 +00:00
Axel Dörfler 4684dfec2d socket_connected() now notifies waiting selects().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19662 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-31 15:45:10 +00:00
Axel Dörfler 79608a2de7 * 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
2006-12-19 03:01:18 +00:00
Axel Dörfler 8dfd7ea7bf * 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
2006-12-19 02:06:07 +00:00
Axel Dörfler 5869c1e7f3 * 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
2006-12-05 02:15:20 +00:00
Axel Dörfler f4b9215615 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
2006-12-04 16:54:05 +00:00
Axel Dörfler 94fb808a48 * 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
2006-11-30 20:43:24 +00:00
Axel Dörfler 41c6726359 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
2006-11-30 17:56:17 +00:00
Axel Dörfler 7c0541c12f 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
2006-11-25 10:29:20 +00:00
Axel Dörfler a627118936 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
2006-11-24 22:58:39 +00:00
Axel Dörfler ead36a7efb The pending/connected connection lists were not initialized.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19258 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-11 16:33:43 +00:00
Axel Dörfler b70a062dc5 * 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
2006-11-11 11:56:52 +00:00
Axel Dörfler d2021d5766 * 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
2006-11-10 10:31:44 +00:00
Axel Dörfler 44b3faaa19 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
2006-11-10 09:32:11 +00:00
Axel Dörfler 1a0e92a33b 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
2006-11-09 18:53:18 +00:00
Axel Dörfler ee50138fcd 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
2006-10-07 12:37:13 +00:00
Axel Dörfler a7028ce680 * 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
2006-10-07 12:32:02 +00:00
Axel Dörfler 340cd7be3a * 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
2006-08-10 18:12:18 +00:00
Axel Dörfler 943cedf784 setsockopt() now understands all boolead options.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18475 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-10 18:04:38 +00:00
Axel Dörfler c22d69bf1f * 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
2006-08-08 13:07:07 +00:00