Commit Graph
100 Commits
Author SHA1 Message Date
Axel Dörfler 6ec5758fe7 * Cleanup - this is very ugly code, and the API is also not really good; we
really should get rid of the current mail kit some day.
* Fixed another memory leak I stumpled upon.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38245 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 18:20:42 +00:00
Axel Dörfler 02b5d2e4e3 * Stefano was right, there was another leak - I've fixed them all now in a
nicer way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38244 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 17:55:23 +00:00
Axel Dörfler 4af303359b * We need to reset the blockNumber, or else we'll discard the wrong blocks
which has rather desastrous consequences - thanks to Stippi for the heads
  up :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38242 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 16:44:51 +00:00
Axel Dörfler 28de0904dc * Added non-const sockaddr casts.
* Automatic whitespace cleanup.
* This also fixes the build; I wanted to commit this earlier.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38237 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 15:41:33 +00:00
Axel Dörfler f072d0a87a * The "route" command now uses BNetworkAddress instead of its home brewn
solution, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38233 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 13:04:50 +00:00
Axel Dörfler c141a31f83 * Fixed CID 1447 which was an actual bug which completely voided the whole
discard mechanism eventually causing the conflicts between the file cache
  and the block cache it intended to fix.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38232 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 12:23:38 +00:00
Axel Dörfler 7ac6de66a4 * Removed a few superfluous "else" keywords.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38231 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 11:58:27 +00:00
Axel Dörfler 3e86abbd71 * Added an extra check as requested by CID 1567, but also added a comment why
this (and other checks) should not be necessary in the first place.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38229 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 11:39:39 +00:00
Axel Dörfler d74f5f5bb5 * Cleaned up the code which also closes CID 176 which was not a bug, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38228 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 11:26:23 +00:00
Axel Dörfler adc92cdef7 * Fixed CID 1750: the team args could be leaked in exec_team() on error.
* Also fixed a leak of the same object in team_create_thread_start() I spotted
  while looking into it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38227 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-18 11:07:20 +00:00
Axel Dörfler 9189743037 * Style cleanup.
* Made an enum out of the mailbox type.
* Rearranged some code to get rid of CID 1328 which was not a bug, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38209 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 19:07:16 +00:00
Axel Dörfler 0f274fd5b2 * Calmed down CID 1976; the problematic situation should not be able to occur,
but I've changed it anyway to make the code clearer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38206 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 18:22:17 +00:00
Axel Dörfler 87de0cb4e1 * Fixed CID 1199-1202: only call the cache listener in case the open succeeded
(this might also have derefenced a potentially freed vnode).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38196 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 16:15:45 +00:00
Axel Dörfler 297e601d68 * Fixed CID 1293: a vnode reference, and the cookie could be leaked.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38195 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 16:08:50 +00:00
Axel Dörfler 6dcca7f6ab * Fixed CID 1472: "next" could be NULL and dereferenced.
* Simplified code a bit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38194 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 15:39:26 +00:00
Axel Dörfler ed64d4e0f5 * Fixed CID 1511: protocol could be NULL.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38193 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 15:34:24 +00:00
Axel Dörfler 579e19f5b9 * Fixed CID 1703: buffer could be leaked. Thanks to Stefano for the note.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38191 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 15:21:39 +00:00
Axel Dörfler b250dfdf26 * The ActivityMonitor now uses the new network C++ API to retrieve the
interface stats. This fixes bug #6457.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38182 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 11:57:01 +00:00
Axel Dörfler 3f7e748f91 * Made the code a bit more robust against faulty use.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38181 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 11:45:56 +00:00
Axel Dörfler ed18d7cf71 * Initialized the domain_datalink's first_{protocol|info} members. This fixes
the crashing bug reported by Atis when trying to add an interface which fails
  (the bug causing this has already been fixed with the previous commit).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38180 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 11:45:26 +00:00
Axel Dörfler 75b83073c2 * Getting an address leaked a reference. This fixes that interfaces could not
really be deleted (a reference of them was kept in memory).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38179 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 11:43:22 +00:00
Axel Dörfler 7e046eab3b * 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
2010-08-17 09:51:22 +00:00
Axel Dörfler a690e25952 * BNetworkInterface must adopt the family from the address, if possible. This
should fix "ifconfig" for IPv6.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38177 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-17 09:15:33 +00:00
Axel Dörfler 3f2a18bd30 * 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
2010-08-16 15:01:26 +00:00
Axel Dörfler df2895e0f8 * Automatic whitespace cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38119 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-15 13:24:41 +00:00
Axel Dörfler 44a3d0d1f6 * Spotted a few reference counting bugs that were probably responsible for
#6446, although I could not reproduce the exact problem.
* net_datalink::is_local_[link_]address() now releases a previous reference if
  the _interfaceAddress arguments does not point to NULL.
* When a buffer is received from a device, it's interface_address should be NULL
  already.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38118 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-15 13:21:42 +00:00
Axel Dörfler 11eccb54e2 * Added ability to be able to dump a net_interface by name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38117 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-15 13:17:52 +00:00
Axel Dörfler a89dbefb7d * On change_address(), arp_remove_local_enty() must not switch to the address
that caused the change (but that has not actually been changed yet).
* Also, it will now reset the INADDR_ANY local address in case there is no
  other address configured. This should help with automatic configuring after
  deletion of an interface address (though it doesn't seem to work yet for
  some other reason, at least in VMware).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38110 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-15 10:39:39 +00:00
Axel Dörfler 7a1123a7bf * Moved the "run me on the boot CPU" code to where it is actually used.
* Added a TODO that thread_yield() doesn't like to be called from the idle
  thread.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38109 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-15 10:17:42 +00:00
Axel Dörfler 75148e0193 * Applied patch by Janito that fixes broken reverting when a rename operation
failed on last chance. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38103 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-14 18:41:52 +00:00
Axel Dörfler bfd62966de * Removed useless and wrong "net" symlink from the repository, hope that helps
Clemens.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38085 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-13 12:59:43 +00:00
Axel Dörfler 8dcde8b128 * B_SOCKET_SET_ALIAS handling was leaking references.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38079 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-13 10:27:00 +00:00
Axel Dörfler 7e5d6acf69 * Added rlphy MII driver back to the rtl81xx driver - originally, I intended to
change the current MII management, but I ran out of time.
* This should fix bug #6295.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38078 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-13 09:10:53 +00:00
Axel Dörfler 8ccc01cf2d * Improved the output of the "net_domains" KDL command.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38077 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-13 08:02:40 +00:00
Axel Dörfler 095f97a6b6 * Fixed memory leaks pointed out by Stephan, thanks!
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38068 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 21:20:31 +00:00
Axel Dörfler 97dfb56d81 * ifconfig is no longer using any ioctl()s, but the new C++ classes only. Seems
to work fine so far.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38061 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 13:51:34 +00:00
Axel Dörfler 97ef73e074 * Added convenience methods FindAddress(), and FindFirstAddress().
* Added BNetworkInterfaceAddress::Destination() as synonym for Broadcast()
  (depending on the configuration, it could be either one).
* Media() will now return -1 in case of an error.
* Added "const" where it makes sense.
* Added convenience functions for AddAddress(), and RemoveAddress() that only
  take the actual address.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38060 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 13:50:32 +00:00
Axel Dörfler 2c12b8a334 * Also report the address index back to the userland.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38059 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 13:45:18 +00:00
Axel Dörfler 14d0b44b79 * Applied the B_SOCKET_SET_ALIAS address retrieval logic to B_SOCKET_GET_ALIAS
as well (of course, no address is created automatically here).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38058 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 13:38:52 +00:00
Axel Dörfler 530f548320 * Implemented AddInterface(), and RemoveInterface().
* Added comment explaining why using AF_INET is not really a good idea.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38057 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 13:30:39 +00:00
Axel Dörfler b85c513ee7 * B_NO_ADDRESS_RESOLUTION now implies not setting AI_ADDRCONFIG, as that flag
doesn't really make sense in this case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38056 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 13:29:44 +00:00
Axel Dörfler 31a49a69c7 * Added support for printing AF_LINK addresses.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38055 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 13:28:55 +00:00
Axel Dörfler a271028e37 * Also create a new address for B_SOCKET_SET_ALIAS if the index is -1 - this
now has an almost equivalent logic to the old setters like SIOCSIFADDR.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38054 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 13:27:50 +00:00
Axel Dörfler 910ffb32fe * If the network mask, and broadcast are not specified with a B_SOCKET_SET_ALIAS
they will no longer be unset - instead they are set with defaults.
* If B_SOCKET_SET_ALIAS gets an index of -1, it will now try to find the local
  address, and if that fails, will just use the first address there is.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38053 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 13:25:45 +00:00
Axel Dörfler cd8ca1e595 * Improved error reporting.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38040 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 11:43:20 +00:00
Axel Dörfler 836c43f2b8 * Factored out a BNetworkAddressResolver from BNetworkAddress, that also allows
to iterate over all possible addresses, as suggested privately by Rene.
* Added flags to the resolving methods that allow more control over the
  addresses returned.
* Added setters to BNetworkAddress that accept a service name instead of port
  number, renamed PortName() to ServiceName().
* Made the sockaddr* cast operators return a const sockaddr as it was supposed
  to be, although I should probably add non-const ones as well.
* This also simplified the code somewhat.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38039 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-12 11:27:14 +00:00
Axel Dörfler aa6c140bc2 * Removed no longer needed utility functions, and use BNetworkAddress instead
of where they were used before.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38028 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 13:57:39 +00:00
Axel Dörfler 23f2073215 * Implemented SetToMask(), and added PrefixLength() method, mostly reusing
code from ifconfig.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38026 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 13:53:31 +00:00
Axel Dörfler b2a400e53a * Reimplemented listing interfaces completely via the new C++ API. Only when
configuring or deleting interfaces, the ioctl()s are used directly for now;
  but this should be changed as well.
* Applied patch by Atis partially that fixes mask creation by prefix length,
  and changes a few other minor things.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38025 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 13:25:36 +00:00
Axel Dörfler 9de96be375 * Added methods to get/set the media/metric.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38024 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 13:18:36 +00:00
Axel Dörfler 54b6869f51 * Forgot to implement the sockaddr* cast operator.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38023 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 13:18:03 +00:00
Axel Dörfler 584866c82f * Patch by Atis: reverted a few changes made to the FreeBSD version of ping6.c,
and use libutil.a.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38022 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 12:45:48 +00:00
Axel Dörfler 3794b8e560 * Applied Atis latest changes to the IPv6 related modules. This brings them back
into a working state after the latest stack changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38021 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 12:44:38 +00:00
Axel Dörfler 757a6d2587 * Added the IPv6 test programs as part of Atis latest patch.
* Added an ipv6_ prefix to all test apps, as their names clashed with existing
  test apps.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38019 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 12:34:44 +00:00
Axel Dörfler 4bfbfb4da5 * Corrected compatibility note. I wonder why I share my wisdom on the public
mailing list if I am then asked to do the work myself ;-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38016 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 12:00:47 +00:00
Axel Dörfler e8802e499c * datalink_control() also need to accept structures smaller than ifreq as long
as the interface name can be specified.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38015 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 11:41:54 +00:00
Axel Dörfler c968ec1c41 * Improved error output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38014 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 11:39:51 +00:00
Axel Dörfler b232302077 * The leading spaces and zeros are now actually skipped, instead of copied first
and then replaced.
* Now considers a space to end a number chunk. In the future, we might want to
  think about sorting fractional amounts correctly as well, but I guess that's
  not that important for Tracker.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38013 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 10:29:00 +00:00
Axel Dörfler 6a960972b5 * We cannot use a natural sorting algorithm that only supports int32 - that
cannot be stable for entries with up to B_FILE_NAME_LENGTH (256) bytes.
* Rewrote the natural sorting code to be simpler where possible, but also
  supports sorting numbers of arbitrary length.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38012 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 10:14:20 +00:00
Axel Dörfler 28bbeaca96 * Removed the call to net_stack_module::register_domain_device_handler(), as
it's not needed for locally received buffers. This fixes a doubled
  initialization for a single device when there is more than a single domain
  involved. Reported by Atis.
* Fixed missing call to unregister_device_deframer() in case there was not
  enough memory to allocate the loopback_frame_protocol object.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38002 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-10 10:46:27 +00:00
Axel Dörfler 1ebd87f4e7 * As Atis pointed out, the SIOCSIFNETMASK here didn't make any sense, must have
been a copy&paste error.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38001 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-10 10:31:22 +00:00
Axel Dörfler d45bbb649e * Implemented that pressing the window modifier plus double click will minimize
the window. This closes ticket #6429.
* Got rid of useless _Extract*() methods. Also removed the _ActionFor() variant
  that only took a message.
* Removed unused "invalidate" variable in MouseUp().
* Coding style cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-10 10:00:16 +00:00
Axel Dörfler 3a5082aa46 * Got rid of the home brewn double click detection - we're now simply using the
"clicks" field of the mouse message as everywhere else.
* Renamed Decorator::Clicked() to MouseAction().
* Minor style cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37996 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-10 09:14:46 +00:00
Axel Dörfler cb7ce9a32f * Renamed DescriptorCloser to FileDescriptorCloser as suggested by Ingo.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37995 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-09 21:23:05 +00:00
Axel Dörfler f65256c2e7 * Fixed a bug in BNetworkRoster::GetNextInterface() that caused an endless loop
and always returned the first interface.
* Fixed bug #6436 by using the new BNetworkRoster functionality.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37994 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-09 19:12:51 +00:00
Axel Dörfler 4af124a15a * We need to acquire references to the interface_address when copying/cloning
the buffer, and we also need to release it when freeing it.
* Adapted patch by Atis: append_cloned_data() now preserves the stored header;
  this is kind of bad, because it will not notice if the original header is
  removed, but this could probably just be documented this way.
* Also print the reference count of the interface addresses.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37993 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-09 19:03:39 +00:00
Axel Dörfler c8b53acf35 * Also initialize the arp_protocol::local_address field, spotted by Atis,
thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37991 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-09 17:53:42 +00:00
Axel Dörfler 78abd72799 * Made the work-around that Atis added to ifconfig and the net_server
in order to be able to use SIOCSIFADDR (and friends) on a net yet added
  family superfluous; we now add a new address when needed on the fly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37990 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-09 17:08:41 +00:00
Axel Dörfler c2808ea7b2 * Adapted API as needed, and implemented most of the C++ API - it's completely
untested at this point, though.
* Will port ifconfig, NetworkStatus, and the Network preferences application
  later in order to test the API.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37988 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-09 16:31:40 +00:00
Axel Dörfler d91215d3f1 * Added DescriptorCloser helper class.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37986 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-09 16:30:24 +00:00
Axel Dörfler 969d58acec * Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37985 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-09 16:30:04 +00:00
Axel Dörfler bf58f252de * Adapted headers after Stippi's suggestions - I won't add the const until I
know how I implement that function :-)
* Cleaned up libbnetapi.so Jamfile, removed non-Haiku target code.
* Added empty files to the build to see that the headers are compiling.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37942 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-06 13:22:25 +00:00
Axel Dörfler 1f9c8c4576 * Changed the _SIZEOF_ADDR_IFREQ() macro such that it can be used how we are
using it - hopefully, that is actually correct (it's adopted from FreeBSD).
* Fixed bug that cut off the sockaddr_dl reported by the system, so that DHCP
  wouldn't work anymore (and ifconfig wouldn't show the actual MAC address
  anymore).
* Changed the listing code to actually pad to ifreq size, and leave the length
  of the sockaddr untouched.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37941 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-06 12:58:02 +00:00
Axel Dörfler 8b6048a285 * The sockaddr_dl can actually be longer than sockaddr, so we need to use a
sockaddr_storage here (wasn't that bad before, as ifreq has a 30 bytes buffer
  after the sockaddr.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37940 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-06 12:55:51 +00:00
Axel Dörfler 081dd39e94 * Further improved debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37938 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-06 11:13:00 +00:00
Axel Dörfler b0cf274a3f * Interface::_ChangeAddress() got the address check for equality wrong,
effectively rejecting any try to set an address.
* It now copies the new address as well in order to make sure that its
  sa_len field is set correctly.
* Improved debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37937 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-06 09:59:55 +00:00
Axel Dörfler ff1b1ac7ff * Introduced first draft of a C++ network API. Comments welcome (I haven't
started implementing it yet, anyway).
* Note that BNetworkAddress is supposed to replace BNetAddress -- the latter
  does not provide enough space for a struct sockaddr_storage, and has a very
  IPv4 specific and incapable API, anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37936 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-06 08:08:02 +00:00
Axel Dörfler 6b1e148824 * Only actually call change_address() of the net_datalink_protocols if the
address actually changed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37928 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-05 13:27:31 +00:00
Axel Dörfler 715fed4479 * Make sure the SIOCGIFCONF never returns an address with an address length
smaller than sizeof(sockaddr). This fixes a compatibility issue with other
  platforms - portable software often assumes that the amount of bytes to
  add to an ifreq structure is the larger amount between sizeof(ifreq), and
  basically what the _SIZEOF_ADDR_IFREQ() macro returns, instead of always
  relying on that macro.
* Renamed UserBuffer::Copy() to Push, ConsumedAmount() to BytesConsumed(),
  added Pad() method.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37927 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-05 13:17:12 +00:00
Axel Dörfler 40061f8fd5 * Use the _SIZEOF_ADDR_IFREQ() macro instead of computing the length manually.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37926 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-05 13:13:02 +00:00
Axel Dörfler 481f986b59 * Added missing clear() method.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37924 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-05 11:23:01 +00:00
Axel Dörfler cb51fb9e4d * Turns out it wasn't such a bright idea to reset the protocol in
arp_update_entry() for known entries, as it also uses that to update the
  timestamp.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37923 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-05 11:09:17 +00:00
Axel Dörfler 691749c0a3 * Changed mouse down behavior for all mouse modes while dragging a window: now
a second click on the right mouse button will raise the window again.
* Desktop::SendWindowBehind() now locks a bit earlier, as some of the things
  it did shouln't really be done without holding a lock (depending from where
  it was called).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37922 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-05 11:06:10 +00:00
Axel Dörfler e4e72487c2 * Added TODO about how to implement pcap_inject_haiku() - it's not used for
tcpdump, though.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37917 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-05 08:48:47 +00:00
Axel Dörfler 07ad8bb60e * We need to call arp_remove_local_entry() from arp_change_address() even if the
old address is NULL for anything but SIOCAIFADDR. Hopefully, this fixes the
  problem Rene is seeing.
* Make sure that arp_entry::protocol is not NULL before using it. This is
  necessary because of the possibility to manually set ARP entries.
* Further improved debug output.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37916 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-05 07:56:23 +00:00
Axel Dörfler afbbc97abf * Improved debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37906 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-04 18:16:07 +00:00
Axel Dörfler 3426ce1404 * Thanks to Janito I had a closer look to cache_detach_sub_transaction(), and it
turned out it's pretty much broken. Not only did it potentially leak memory,
  it would also potentially replace the original data with a NULL pointer,
  making the current transaction non revertable. The code should now be much
  clearer. This fixes bug #6378.
* Changed a few "if (... != NULL)" into ASSERTs, since the code should bail out
  earlier in these cases already.
* Added a TODO comment to cache_start_sub_transaction() about its broken discard
  handling. This can cause FS corruptions in case the parent transaction is ever
  going to be aborted (which shouldn't happen in real life, though).
* Added a bit more and better comments.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37899 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-04 13:19:20 +00:00
Axel Dörfler 2b4154458a * 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
2010-08-04 10:35:40 +00:00
Axel Dörfler dc660d32ef * 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
2010-08-04 08:42:25 +00:00
Axel Dörfler f91f6b6285 * Implemented changing the "click to focus" mode as suggested in ticket #6419.
* It feels much better, but maybe raising the window should only happen on the
  second click instead?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37894 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-04 08:11:32 +00:00
Axel Dörfler 2248e30f11 * Fixed broken accept-first-click eating logic I introduced yesterday, sorry!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37893 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-04 08:10:07 +00:00
Axel Dörfler 0e505c0c7b * Separate the B_WILL_ACCEPT_FIRST_CLICK window flag from the accept-first-click
desktop setting, following bug #6420.
* Now, only windows with the flag set have to implement their activate behaviour
  itself (as Tracker does), the desktop setting no longer has an influence on
  this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37885 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 19:39:50 +00:00
Axel Dörfler 7aa2819c12 * Enabled removing the interface on device removal again.
* Made the return type of remove_interface() void, as it cannot fail.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37884 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 19:33:05 +00:00
Axel Dörfler dac5d7fe4f * Made sure that at least the common case with a single writer exits write()
once the file descriptor is closed.
* Reinstantiated the FIFO functionality as long there are no writers yet as
  explained by Ingo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37883 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 19:27:52 +00:00
Axel Dörfler 2b1c0755dd * Renamed the proprietary SIOC_* ioctls to B_SOCKET_* - no reason to pollute
global name space, and have ugly identifiers for nothing :-)
* Added a flags field to struct ifaliasreq. Added flags to mark an alias that
  is currently being configured, or has been automatically configured.
  Those flags aren't used yet, but they will replace IFF_CONFIGURING and
  friends.
* Implemented deleting addresses only from interfaces via ifconfig.
* Added more command aliases for delete to ifconfig ("del", and "delete", for
  more consistency with route).
* Fixed control_routes() to only release a reference to an address if it
  actually got one before.
* If an interface address is deleted, its routes are now removed as well.
* InterfaceAddress now holds a reference to its interface as planned.
* Implemented removing interfaces. Works quite nicely.
* When downing an interface, all of its routes are now removed. When upping
  it again, at least the default routes are added.
* datalink.cpp's get_interface_name_or_index() leaked a reference to the
  interface found.
* SIOCAIFADDR would also leak a reference when new addresses were added.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 15:51:54 +00:00
Axel Dörfler 2651e51d92 * 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
2010-08-03 12:00:06 +00:00
Axel Dörfler 03e02ed983 * Introduced a datalink layer (2) independent way of specifying the packet
type one wants to receive. Changed ipv6_datagram to use that (but note that
  it currently does not compile).
* Header cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37868 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 11:23:03 +00:00
Axel Dörfler 690acf8bd2 * Got rid of _SocketEnqueue().
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37867 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 11:19:22 +00:00
Axel Dörfler e4f401b349 * Cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37866 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 11:18:52 +00:00
Axel Dörfler 1ffa502964 * Cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37861 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 07:35:42 +00:00