History log of /haiku/src/servers/net/DHCPClient.h
Revision Date Author Comments
# 9216fc01 18-Jun-2018 Augustin Cavalier <waddlesplash@gmail.com>

More class/struct mixup fixes.

Spotted by Clang.


# 3bbff30d 25-Mar-2017 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

DHCP initial timeout 0.25s from 4s

Connecting to wifi is very slow, there are several issues.
Easiest to find and fis is that on my wifi DHCP always took
4s, as first request fails. Still investigating why..
Reducing timeout to 0.25s makes DHCP process fast.

Moved timout handling into its own struct, and changed state
timeout from max(remaing, 60s) to min(remaining, MAX_TIMEOUT)
Not sure about that change, but why would you want a max value
that is at least 60s?


# 6972b91e 24-Jul-2013 Pawel Dziepak <pdziepak@quarnos.org>

servers/net: Make DHCP client more RFC 2131 compliant

* The client should enter state REBINDING only when RENEWING times
out.
* When in RENEWING or REBINDING state do not give up retrying
unless the lease expires.
* Fix bug sending 2^n DHCP requests at n-th lease renewal.
* Use timeout values and renewal/rebinding times suggested by the
RFC.
* Use different XIDs in subsequent transactions.


# 5f25cf08 19-May-2012 Siarzhuk Zharski <zharik@gmx.li>

Put hostname option into DHCPDISCOVER/DHCPREQUEST if provided by system

If Haiku has the hostname set, inform DHCP server with corresponding
option in DHCPDISCOVER and DHCPREQUEST messages. That should simplify
accessing Haiku hosts by using it's hostname instead of raw addresses.


# 0892800f 27-Apr-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Implemented INIT-REBOOT DHCP state: as required per DHCP specs,
we now request the last address we got from DHCP server, and only on failure
we fallback on the whole INIT state (discover, collect offer, etc).
This should fix people losing their IP address at each renewal, or far worse,
after the link goes up again.
Closed #7346.


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


# e65843e8 22-Apr-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Revert files that were commit by mistake in previous commit. Sorry.


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


# 9ff5266f 22-Apr-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Avoid deadlock.


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


# 84fdf2c3 22-Apr-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Made _AddressToString() static methods.


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


# d5d2fdf0 26-Nov-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

* Renamed some option to match more RFC2132 names
* dhcp_message::NextOption() now set cookie.next to NULL on exit if there is no space left
* dhcp_message::Size() now handle OPTION_OVERLOAD case
* Renamed _ToString() to _AddressToString()
* Any error message send by DHCP server will show up in syslog now
* Reorganize DHCPClient::_PrepareMessage() to make more easy to see which
option is added per message type.
* OPTION_SERVER_ADDRESS was always added to DHCP_REQUEST, which MUST NOT
in renewal and rebinding state according RFC 2131.
* add device name to resolver configuration: WIP for #6915...



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


# af074561 23-Nov-2010 Axel Dörfler <axeld@pinc-software.de>

* Now uses the new network API instead of directly using socket ioctls.
This makes the code much cleaner and simpler.
* Completely untested, though (will do that next).


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


# 16e8f13a 11-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* Applied patch by Vegard that moves the resolver configuration to where it
belongs (with a few changes by myself). Thanks!
* This closes ticket #5636.


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


# c1264353 26-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

My first fix to avoid overwriting resolv.conf was better. Reverted to this code
and clarified the TODO comments. resolv.conf is written again once per
_ParseOptions(), with the DHCP_ACK messages providing the final data.


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


# 20fb8728 24-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

My commit message in r35940 wasn't quite true, if DHCP_OFFER contained the
name servers, but DHCP_ACK didn't (probably unlikely, but who knows...), then
if DCHP_ACK contained the domain, the name server entries in resolv.conf would
be lost. Now DHCPClient maintains whether resolv.conf should be rewritten and
does so once per _Negotiate() session.


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


# 24b170b9 24-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

Updated indentation style.


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


# 293ed4fe 27-Dec-2008 Axel Dörfler <axeld@pinc-software.de>

* Pulled an AutoconfigClient class out of DHCPClient - all clients are supposed
to inherit from that one (there is still just a single client, though, this
just simplifies having a generic mechanism to register and use auto-config
clients).
* AutoconfigLooper now listens to link changes, and will reconfigure the
interface if a new link is there - this even seems to work in emulation, will
test on real hardware next.


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


# 46ff5400 13-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* 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


# 6cc7630f 12-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* 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


# 10cc12da 11-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

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


# 0ce7725e 11-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* 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


# f9af6566 11-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* 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


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

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


# 6972b91e17f19950fbf994033846a856bff4b796 24-Jul-2013 Pawel Dziepak <pdziepak@quarnos.org>

servers/net: Make DHCP client more RFC 2131 compliant

* The client should enter state REBINDING only when RENEWING times
out.
* When in RENEWING or REBINDING state do not give up retrying
unless the lease expires.
* Fix bug sending 2^n DHCP requests at n-th lease renewal.
* Use timeout values and renewal/rebinding times suggested by the
RFC.
* Use different XIDs in subsequent transactions.


# 5f25cf08b3f018456f117c6b7bdabb9f46efc4d0 19-May-2012 Siarzhuk Zharski <zharik@gmx.li>

Put hostname option into DHCPDISCOVER/DHCPREQUEST if provided by system

If Haiku has the hostname set, inform DHCP server with corresponding
option in DHCPDISCOVER and DHCPREQUEST messages. That should simplify
accessing Haiku hosts by using it's hostname instead of raw addresses.


# 0892800f69bcfb0478aeeeb12171d998d2a315af 27-Apr-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Implemented INIT-REBOOT DHCP state: as required per DHCP specs,
we now request the last address we got from DHCP server, and only on failure
we fallback on the whole INIT state (discover, collect offer, etc).
This should fix people losing their IP address at each renewal, or far worse,
after the link goes up again.
Closed #7346.


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


# e65843e8c981b8537e1c0dd1d20c09c6404e5dfb 22-Apr-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Revert files that were commit by mistake in previous commit. Sorry.


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


# 9ff5266f3a21c5a8983c4cfacf2442edf3e4f740 22-Apr-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Avoid deadlock.


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


# 84fdf2c3cab367726e10d72d72c30f12baa330da 22-Apr-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Made _AddressToString() static methods.


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


# d5d2fdf0b3ba12e3443dc15222f198f5d1fb2346 26-Nov-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

* Renamed some option to match more RFC2132 names
* dhcp_message::NextOption() now set cookie.next to NULL on exit if there is no space left
* dhcp_message::Size() now handle OPTION_OVERLOAD case
* Renamed _ToString() to _AddressToString()
* Any error message send by DHCP server will show up in syslog now
* Reorganize DHCPClient::_PrepareMessage() to make more easy to see which
option is added per message type.
* OPTION_SERVER_ADDRESS was always added to DHCP_REQUEST, which MUST NOT
in renewal and rebinding state according RFC 2131.
* add device name to resolver configuration: WIP for #6915...



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


# af0745618fc4fca86016d858e5ba9dc64dab16ea 23-Nov-2010 Axel Dörfler <axeld@pinc-software.de>

* Now uses the new network API instead of directly using socket ioctls.
This makes the code much cleaner and simpler.
* Completely untested, though (will do that next).


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


# 16e8f13a6348d5899cc50506c91f9ce380ed8532 11-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* Applied patch by Vegard that moves the resolver configuration to where it
belongs (with a few changes by myself). Thanks!
* This closes ticket #5636.


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


# c12643530e76354db6e26662873654ae7e607fc9 26-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

My first fix to avoid overwriting resolv.conf was better. Reverted to this code
and clarified the TODO comments. resolv.conf is written again once per
_ParseOptions(), with the DHCP_ACK messages providing the final data.


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


# 20fb872810c69be5e9d544781703165e854e0510 24-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

My commit message in r35940 wasn't quite true, if DHCP_OFFER contained the
name servers, but DHCP_ACK didn't (probably unlikely, but who knows...), then
if DCHP_ACK contained the domain, the name server entries in resolv.conf would
be lost. Now DHCPClient maintains whether resolv.conf should be rewritten and
does so once per _Negotiate() session.


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


# 24b170b983b9120c426f5b03666fcbb1ce5e7c1b 24-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

Updated indentation style.


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


# 293ed4fe5b1e467f2008fa2c0df5c339c989c00d 27-Dec-2008 Axel Dörfler <axeld@pinc-software.de>

* Pulled an AutoconfigClient class out of DHCPClient - all clients are supposed
to inherit from that one (there is still just a single client, though, this
just simplifies having a generic mechanism to register and use auto-config
clients).
* AutoconfigLooper now listens to link changes, and will reconfigure the
interface if a new link is there - this even seems to work in emulation, will
test on real hardware next.


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


# 46ff54007d71698788ded180c50f8867ab2df815 13-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* 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


# 6cc7630f36e2801c9cfb04571e07431f0d4c1149 12-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* 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


# 10cc12da06b8a621bd91b517257b42dbcd03ddc7 11-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

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


# 0ce7725e1ce38e95260696fd94feb958b0e8abd4 11-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* 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


# f9af65667d67cd6f0a9a0cae09f7071268dbde16 11-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* 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


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

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