Commit Graph
100 Commits
Author SHA1 Message Date
Axel Dörfler fc398fa2ab * Added "services" to the network settings, and refactored the settings class a bit
to be easier extendable with more classes.
* Fixed a bug in the settings that caused updated settings to be appended to the
  existing ones (missing BMessage::MakeEmpty()).
* Started services system, doesn't do anything useful yet (inetd replacement).
* Fixed the bug that caused the loopback default netmask to be incorrectly chosen;
  removed the temporary fix Bruno introduced before. The same bug has been in
  ifconfig where I copied the code from (but wrote it there, too) :-).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19609 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-22 20:53:08 +00:00
Axel Dörfler 206df9cd04 Removed choice of separator style - there is only one to rule them all, now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19606 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-22 11:17:16 +00:00
Axel Dörfler 5a93dff747 Made ColorWindow font sensitive.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19605 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-22 11:15:05 +00:00
Axel Dörfler ce0998ad77 * Fixed many style issues, patch by Vasilis Kaoutsis
* Fixed some more style issues, removed unneeded class member variables.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19604 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-22 11:05:17 +00:00
Axel Dörfler d2de13bdd4 The boot loader (BIOS IA32 only) now chooses the default video mode by looking at the
EDID info from the monitor if available through VESA/DDC.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19588 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-21 14:20:17 +00:00
Axel Dörfler 9a4b4c617b * Fixed warning.
* Now using the new %f flag to print the level of support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19584 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-21 12:12:50 +00:00
Axel Dörfler dedf1bccfe Since we're using floating point values at several places in the kernel, I added
a very simplistic floating point output routine to snprintf() and friends, for
your convenience.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19583 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-21 12:05:16 +00:00
Axel Dörfler d6edf65b05 Fixed error checks for EDID retrieval.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19582 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 22:49:53 +00:00
Axel Dörfler f1994d8b4c Fixed a warning I probably just introduced.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19581 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 21:48:30 +00:00
Axel Dörfler 5d7d960fac Added EDID version 1 retrieval from VESA; doesn't do anything yet besides dumping the
info to the serial line - not tested yet (as Qemu doesn't support DDC/EDID).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19580 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 21:44:03 +00:00
Axel Dörfler 3277df6e04 * Now always uses dprintf() instead of the SHOW_INFO() macro - you should only call
it in your code when you actually want to have debug output, anyway.
* No longer include ddc_int.h when compiled for the kernel or boot loader.
* Cleanup: coding style, and removed the "buffer" variable - floating point values
  can be shown in userland either way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19579 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 21:39:11 +00:00
Axel Dörfler 97584f7d11 * Made header C++ safe.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19576 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 21:13:59 +00:00
Axel Dörfler 047165ce77 * Fixed a warning.
* Removed unused include.
* Minor cleanup to match our style guide better.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19575 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 21:10:25 +00:00
Axel Dörfler b5428267c7 This should fix the most often found kernel crash (on bootup):
* vm_soft_fault() did not take into account that a cache's source can change while
  traversing a cache chain.
* Now, we grab a reference to every cache we get before locking it, and
* no longer get the cache's source without having the cache locked.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19571 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 12:34:21 +00:00
Axel Dörfler eb445177f9 * When a vm_cache is merged with another one, we now remove the consumer; that allows
for an extra check in vm_cache_release_ref() as the cache shouldn't have any areas
  or consumers at this point.
* Fixed a locking problem in vm_cache_remove_consumer(): the cache was acquired after
  its lock was gone, so someone else might have released in the mean time.
* if the cache's source is to be replaced, we now no longer release its lock after
  having merged it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19570 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 12:30:07 +00:00
Axel Dörfler 7da584bb64 * Looks like setting the first 16 palette entries is not enough.
* Tested a bit more, and there seems to be some minor drawing problems.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19568 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-19 23:01:58 +00:00
Axel Dörfler 0c6f77951e * Moved VGA planar mode blitting into the VESA kernel driver.
* In grayscale mode, the AccelerantHWInterface now sets the palette correctly.
* HWInterface now has a fVGADevice set by AccelerantHWInterface which will be used
  to talk to the VESA driver.
* Completed planar blitting for all 4 planes; we now have a perfect 16 color
  grayscale mode when you choose "Standard VGA mode" in the boot loader with
  an unsupported graphics card (such as in Qemu).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19567 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-19 22:57:56 +00:00
Axel Dörfler c46eb09e8f * The 4-bit VGA planar mode is now advertized as B_GRAY8 to the app_server.
* The app_server now detects that this mode is being used, and at least correctly copies
  the 32bit data to the first plane, meaning we have a monochrome output for now
  (it crashed before, as Stefano reported).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19565 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-19 18:45:40 +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 5aee6a9ee1 Added wget, tcpdump, and netstat to the image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19561 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-19 02:22:50 +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 cf6b262822 Ported tcpdump 3.9.5, and libpcap 0.9.5 to Haiku to test our link level packet
monitor. Their build system and file hierarchy is pretty poor (as well as the
internals of libpcap), but the app itself seems to work well :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19556 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-18 19:22:32 +00:00
Axel Dörfler c0d50aaedb Fixed several problems:
* sockaddr_storage::ss_len is max 255, but the structure itself is shorter; we must
  not copy ss_len bytes without checking the length first (duplicate & clone were affected).
* count_iovecs() & get_iovecs() both did not work with empty buffers that don't
  have any nodes at all (unlikely case, but should be supported).
* the net_buffer::offset union field was not copied in clone & duplicate.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19555 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-18 19:13:59 +00:00
Axel Dörfler 85895023b3 We also need to put the outgoing packets into the device monitor.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19554 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-18 19:09:09 +00:00
Axel Dörfler 6b507ddd46 Made set[e]gid() and set[e]uid() succeed in case they don't have anything to do.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19553 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-18 18:00:21 +00:00
Axel Dörfler c2c739ce33 * Removed superfluous prototypes from in.h. Minor cleanup.
* Fixed in6.h header. to be able to be compiled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19552 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-18 17:12:54 +00:00
Axel Dörfler da758f9fce * team::args is now correctly filled in.
* the member will now also be shown when dumping a team.
* minor cleanup: moved fill_team_info() into the private functions part of the file.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19551 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-18 12:56:27 +00:00
Axel Dörfler ea228a84f4 Calmed down the VESA accelerant a bit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19550 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-18 12:39:38 +00:00
Axel Dörfler 03f78d6943 Imported wget-1.10.2; disabled SSL for now (it's not yet part of our repository), not yet tested.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19535 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-16 18:25:42 +00:00
Axel Dörfler d881c6ba5c * Replaced the 1400x900 modeline with the one from the nVidia driver - Stephan, does this
work for you, too? If not, just replace it with yours again.
* Added resolution 1680x1050 from nVidia driver.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19525 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-15 14:17:39 +00:00
Axel Dörfler f6d219a166 When removing an interface, we must make sure it's not still up (ie. we need to
bring it down in that case). This fixes the problem that you couldn't bring an
ethernet interface up again, after you deleted it once.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19524 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-15 14:10:25 +00:00
Axel Dörfler 1cdfc4880c Added missing 1400x1050 resolution.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19523 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-15 14:06:18 +00:00
Axel Dörfler 7eb1ef96e2 The device could only be opened once; gOpenMask was never cleared.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19522 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-15 14:05:45 +00:00
Axel Dörfler 8c6363a8a1 Removed -Wall again; since it's added last, it would override the previous disabled warnings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19521 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-15 13:41:10 +00:00
Axel Dörfler 028faa1833 * Added wide-screen resolutions, taken from the nVidia driver.
* Fixed warnings.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19517 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-15 00:22:15 +00:00
Axel Dörfler f5dc376b83 Added missing modeline for 1680x1050 (taken from nVidia driver).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19516 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-14 15:59:07 +00:00
Axel Dörfler 60b71f6575 Applied the cleaned/fixed version of patch by YellowTab:
* essentially, it makes sure certain bits in the PCI config are set
* also added two more device IDs, which I have disabled for now


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19515 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-14 15:26:54 +00:00
Axel Dörfler c166aa847e Added -Wno-multichar to the default kernel GCC flags.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19514 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-14 14:54:51 +00:00
Axel Dörfler 60194b3f49 Added telnet to the image - it doesn't seem to work yet, but that might be
caused by the TCP implementation (it doesn't support urgent data yet!).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19513 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-14 14:15:49 +00:00
Axel Dörfler 4a5ac4bd55 Fixed build on R5 (it doesn't know B_KERNEL_READ_AREA or B_USER_CLONEABLE_AREA).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19512 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-14 13:20:33 +00:00
Axel Dörfler 8c237a3858 Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19495 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 17:09:05 +00:00
Axel Dörfler 8d5a60482c Ported the telnet command from FreeBSD - compiles, but might not yet work; it's
completely untested at this point.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19494 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 16:28:15 +00:00
Axel Dörfler 8f813eeb9d More tweaks to the libbsd.so compatibility library:
* added sigsetmask(), and sigblock()
* added ALIGN(), ALIGNBYTES, and howmany() macros


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19493 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 16:26:43 +00:00
Axel Dörfler caddb025c9 Added sys/un.h header file - AF_UNIX is still unsupported, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19492 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 16:12:17 +00:00
Axel Dörfler a7854360ac Added vfork() as a wrapper to fork().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19491 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 14:50:14 +00:00
Axel Dörfler 278ca3c080 Accidently built libtelnet.a as a shared library.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19490 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 14:34:00 +00:00
Axel Dörfler 46ff54007d * Made the implementation more state driven.
* Now should adhere to the specs with regard to filling the DHCP_REQUEST messages
  in BOUND/RENEWAL/REBINDING states.
* Now take over the times for renewal/rebinding state from the DHCP server, if any,
  or falls back to 2/3 and 5/6 of the original lease time.
* The lease time was accidently shortened twice (to compute the renewal time, in
  case that was missing).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19489 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 13:57:57 +00:00
Axel Dörfler fdad9c93d7 * Ported libtelnet.a and telnetd from FreeBSD.
* The subdirectory is called "libtelnet" instead of "telnet" (as usual), since telnetd
  expects some headers to be found in libtelnet/ (which I could have changed as well,
  just in case you very much prefer telnet/).
* I needed to disable some stuff to make it compile, and it's absolutely not tested,
  so it might as well not work yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19488 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 13:10:00 +00:00
Axel Dörfler 9d6d3fcf5f Some tweaks, made libutil a bit more complete.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19487 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 13:06:42 +00:00
Axel Dörfler 5782c5a3e2 * Added support for setting the broadcast address as well (option 28).
* Now prints out the domain name as suggested by DHCP (option 15).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19486 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 11:58:54 +00:00
Axel Dörfler 1a4e8e7b49 Since VMware seems to have some ridiculuous low lease times, I added some code
that prints out the renewal/rebinding times as well - maybe those should be
preferred when they are there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19484 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 10:22:34 +00:00
Axel Dörfler 6cc7630f36 * Implemented lease time renewal.
* The DHCPClient is now added to its looper before doing the negotiation, so that
  it's BMessenger is already valid.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-12 17:55:48 +00:00
Axel Dörfler a552ec1396 * If DHCP reports DNS addresses, we'll now rewrite /etc/resolv.conf for now.
* minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19477 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-12 16:11:16 +00:00
Axel Dörfler d9084f659a * Added "arp" command to the image.
* Added Hideyuki Abe's vlance driver, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19474 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-12 13:41:57 +00:00
Axel Dörfler a1215fc029 * Disabled check for VMware - shouldn't be required, anyway, and it doesn't compile
with our GCC 2.95.3 (not tested with GCC 4).
* Fixed all warnings.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19473 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-12 13:41:06 +00:00
Axel Dörfler 43bc0ebd1b Added the vlance VMware driver written by Hideyuki Abe.
Unfortunately, the driver does not compile yet with our GCC version.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19471 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-12 12:51:02 +00:00
Axel Dörfler ef8ff79cdb * A copy and paste bug prevented the gateway to be added (worked before the
previous commit).
* Removed the acceptance of a missing DHCP acknowledge message.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19470 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-12 02:56:23 +00:00
Axel Dörfler 0cf5e6ac7d Removed the automatic endian conversion in PutOption() - it was confusing and
the actual cause that my router didn't send an acknowledgement (qemu didn't care) :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19469 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-12 02:18:51 +00:00
Axel Dörfler 10cc12da06 Now delays configuring the interface until we got the DHCP acknowledge message - this
might fix the missing message from my router.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19468 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-12 01:49:47 +00:00
Axel Dörfler e2e290db9b Forgot to add the "auto config" settings parameter to the BMessage template conversion.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19466 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-12 01:18:09 +00:00
Axel Dörfler 0ce7725e1c * An interface can now also be configured to be "auto config" (which means DHCP for now).
* Some minor cleanup in the DHCP client.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19465 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-12 01:16:28 +00:00
Axel Dörfler df3624c10e * DHCP will now actually acknowledge a successful negotiation.
* The lease time wasn't printed correctly.
* if the DHCP acknowledge message never comes, we won't try
  forever, but will just stop early and assume the IP address
  we have is okay (looks like my router doesn't send DHCP_ACK).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19463 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-12 00:32:05 +00:00
Axel Dörfler f9af65667d * Work-in-progress of DHCP - the interface should now be correctly configured.
* Lease times are currently ignored, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19462 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-11 23:58:16 +00:00
Axel Dörfler c8760b9687 * ARP no longer tries to resolve the target address in case of a link-level broadcast
(indicated by MSG_BCAST).
* ARP should now be able to resolve addresses with an unconfigured interface as well.
* datalink_is_local_address() now uses interfaces without an address as a fallback
  in case no more specific interface could be found.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19460 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-11 17:03:08 +00:00
Axel Dörfler 84fcc63a5e * The temporary buffer was never freed in case it still contained more than one iovec.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19459 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-11 16:56:23 +00:00
Axel Dörfler 2e31a85d7f The DHCP message must be send as a link-level broadcast for an unconfigured interface.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19458 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-11 16:54:49 +00:00
Axel Dörfler fb81684f81 The beginnings of automatic configuration of network devices using DHCP; this is
currently only triggered when there is no configuration file - it can't be configured
this way yet.
All DHCP currently does is to send a UDP broadcast DHCP discover message. More to come.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19437 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-06 19:00:00 +00:00
Axel Dörfler 26cbcedb9c Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19436 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-06 18:38:38 +00:00
Axel Dörfler 4818d3b627 IPv4 send_routed_data() can now also work with a route whose address is NULL; this
is useful for bringing up (and using) an unconfigured interface. Specifically, DHCP
will be using this method to get the broadcast out.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19435 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-06 18:38:08 +00:00
Axel Dörfler 9172931102 Updated the Netscript to the syntax of the new commands.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19432 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-05 12:38:02 +00:00
Axel Dörfler bcb0dd2b3b The R5 compatibility is now turned off when the socket functions are used
within the library - theoretically, this mechanism could be extended to
turn the compatibility layer on and off based on the images that call the
functions (allowing to mix R5 and BONE network add-ons in a single executable).
This change fixes R5 networking apps such as Vision, and NetworkTime (both
now seem to work fine under Haiku).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19431 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-05 03:03:15 +00:00
Axel Dörfler 40eb4ed30d * Header prediction was a bit too generous (and thus used too often)
* SendData() could return an error and still wanted to own the buffer passed in
* Removed the timeout computations from SendData() - looks like it's usually
  done the simple way when the data has to be submitted in smaller packets.
* ReadData() no longer blocks in case the peer has closed the connection.
* More debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19430 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-05 02:26:13 +00:00
Axel Dörfler d344e18b94 Calmed down net_buffer and IPv4 a bit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19429 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-05 02:21:06 +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 c31e5df06c count_iovecs() and get_iovecs() now only take nodes into account that contain data.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19426 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-04 17:49:47 +00:00
Axel Dörfler 545be9ce4c We shouldn't try to unlock a no-longer-existing endpoint.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19425 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-04 17:28:14 +00:00
Axel Dörfler 03a536148f TCPEndpoint::fEndpointNextWithSamePort was not initialized when binding to an ephemeral port.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19424 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-04 17:15:36 +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 6cf91f9542 Before freeing "next", it should have been removed already...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19422 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-04 16:15:21 +00:00
Axel Dörfler 64222e845d Make sure that buffers that have more than one iovec can still be sent (by copying them).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19421 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-04 16:14:07 +00:00
Axel Dörfler 9299a7ff2a Now use a random (based on system_time()) initial sequence number - this also
revealed a bug in the recognition of faulty SYNs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19419 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-04 15:09:02 +00:00
Axel Dörfler 442c097946 Renamed class TCPConnection to TCPEndpoint.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19418 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-04 14:49:58 +00:00
Axel Dörfler 10fdb28c47 * Some minor work on TIME_WAIT state, and its timer.
* endpoints are no longer deleted without unbinding them.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19417 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-04 14:41:12 +00:00
Axel Dörfler 9cbe6ce200 Rewrote how bind() works:
* there are now two hash tables: one for connections, and one for ports
* the first one is used to find the endpoint for incoming connections
* the latter is used to check if the address to bind() to is still available
  (incl. support for SO_REUSEADDR, and SO_REUSEPORT). Specialising an existing
  socket is not allowed, though; wildcard sockets need to be started last.
* the TCPConnection class now has a pointer to the next endpoint with the
  same port number - this list is scanned for the existing bound sockets
  on that port.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19416 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-04 13:44:35 +00:00
Axel Dörfler f7d2a39699 Binding the server shouldn't have worked before - sin_len was set to zero...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19415 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-04 13:32:47 +00:00
Axel Dörfler 489caaef82 setitimer() allows the second argument to be NULL.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19411 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-01 13:08:24 +00:00
Axel Dörfler d081f61f0c * The driver did not handle any non-networking opcodes - including B_SET_NONBLOCKING_IO
and friends; the correct behaviour is to not let those opcodes go deeper in the stack
  (ie. when calling control() on the socket).
* Fixed compilation with debugging output turned on.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19410 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-01 12:54:54 +00:00
Axel Dörfler 379cdb69ee Added _socket_interrupt() for compatibility.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19409 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-01 12:41:21 +00:00
Axel Dörfler cdd2dcca7f * Forgot to set the data_node::located in clone_buffer().
* No need to set data_node::header in the loop - this is already done in add_data_node().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19408 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-01 11:58:37 +00:00
Axel Dörfler 78e96e0cfe * If you send more than the maximum buffer size at once, TCP will now block
until it could send all the data.
* The window shift option can now also be send if the actual option is zero to
  indicate we support this option.
* If the window shift is not specified, we'll fall back to 0 for our receive
  window as well now.
* _SendQueued() now resets the segment options after SYN.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19407 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-01 10:18:49 +00:00
Axel Dörfler 8ad667cb0b * After my recent change, append_size() did not work correctly anymore, if
the initial buffer wasn't empty.
* Enlarged the minimum header size a bit (one more data_node).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19406 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-01 09:45:23 +00:00
Axel Dörfler b9a724e79f panic() now results in a debugger call - it now longer exits the app.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19405 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-01 08:31:54 +00:00
Axel Dörfler 7e85d85e7a * TCPConnection::SendData() now waits until there is enough free space in
the send queue (however, if the buffer sent is larger than the maximum
  buffer, it will just hang for now...). The check is also not thread-safe.
* BufferQueue::Get() did not correctly maintain the fFirstSequence member
  in remove mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19403 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-30 22:36:45 +00:00
Axel Dörfler 1d891ef80b Changed the default server port to be used to 1234.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19402 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-30 20:48:16 +00:00
Axel Dörfler 02894e3670 * Reintroduced the accept semaphore: it will be inherited by the new connections
of a LISTEN socket.
* Reading data should now more or less work, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19401 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-30 20:47:26 +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 5131b5bcf6 The window and application server threads now run at B_DISPLAY_PRIORITY, too; this
was a stupid oversight, and should improve the responsiveness of the UI under load
a lot. Thanks Stefano!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19398 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-30 13:15:15 +00:00
Axel Dörfler 26417177e7 More work-in-progress:
* Added some timer methods
* Fixed removing the connection too early (and thus replying with a RST instead of nothing
  when the peer acknowledged our FIN).
* BufferQueue::RemoveUntil() did not bump the buffer's sequence
* Delayed acknowledge, and retransmitting should work now (the latter is *very* basic
  right now)
* Completed TCPConnection::_ShouldSendSegment()
* fReceiveNext was always updated on a received buffer, even if there was a buffer
  missing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19396 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-29 21:53:06 +00:00
Axel Dörfler 2bd388f696 Added two more utility functions to the timer service:
* cancel_timer() cancels a timer, and returns true if the timer was running
* is_timer_active() determines if the timer is currently running or not.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19393 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-29 19:09:19 +00:00