The code has its own TIME type, which is actually defined to time_t,
but it still used u_int32_t in some places.
In addition, dhclient not only had two separate global cur_time
variables, one of which was defined as u_int32_t and the other as
TIME, but cur_time was sometimes shadowed by local variables, leading
to widespread confusion as to which of these variable was being
referenced.
There is a lesson in here somewhere: a decent compiler with warnings
enabled should have caught all of this long before it became a
problem.
This patch has been submitted to the vendor, but it will likely be
some time before they release a version that includes it.
Approved by: mbr
domain name is given and /etc/resolv.conf doesn't exist. Fix this
by using -f (force).
Assigned to ISC as ISC-Bugs #11570
PR: bin/67613
Submitted by: Nikos Ntarmos <ntarmos@ceid.upatras.gr>
then we need to go to the reboot state or in state_bound it will core on
the de-reference of client -> active -> options since client -> active = NULL.
While we are here, fix the indentation.
Submitted by: Doug Ambrisko <ambrisko@ambrisko.com>
to renew a lease, contact the dhcp-server directly instead of using
INADDR_BROADCAST all the time. This should fix some brain-dead dhcp
server implementations which give you all the time a new IP if the
lease has not yet expired.
Instead of using ICMP to check if the server is alive, we just check
the return value of sendto() and additionally have a timeout there.
where the default route is bound to is the same device. Keep it
working for the single user or sysinstall mode, where we just do
what we did before.
Suggested by: dougb
more clear what it does.
Trim interface_active() to just do what it should do. Check
if we got link or not and if the NIC supports it. No special
treatment for mediachecks here anymore.
Simplify the code a lot, and remove doublicated parts.
Fix two minor spelling errors.
Add one missing #ifdef ENABLE_POLLING_MODE
Reviewed by: mdodd
- Rename linkstatus to linkstate which is more correct.
- Sort any leases each time we loose and regain link. With the first
version we spammed the dhclient.leases file.
- When there was no link on a interface, polling has been done twice.
This has been fixed with a bigger sleep interval.
- interface_active() now returns only a assumed state of the link.
If we are using media settings, we cannot be sure that the link
actually works. That means we assume that the link is working and
continue to send requests as usual on the interface and loop over
all possible media options. Polling is still done. If your interface
gets suddenly link, dhclient will send a dhcp discover request.
After all media settings have been tried a few times, dhclient will
sleep. If one does change networks very often, it can help to set the
"retry timeout" to a low value like 100 seconds. The default is over
six minutes.
Tested by: Larry Rosenman <ler@lerctr.org>, imp
requests if the interface has an active link. This is a
great benefit if you often change networks with your laptop
and you do not like to kill/restart dhclient all the time.
Changes are automatically detected and the link is refreshed.
The change allows us to start dhclient in background mode
Enable dhclient to poll the interface state and send only
requests if the interface has an active link. This is a
great benefit if you often change networks with your laptop
and you do not like to kill/restart dhclient all the time.
Changes are automatically detected and the link is refreshed.
The change allows us to start dhclient in background mode
while the network cable is not plugged in.
To control the polling interval, the option -i has been
introduced. It takes seconds as parameter, the minimum is
one second, the default is five seconds.
Polling is done in seconds, not microseconds, because dhclient
does internally work with timeouts in seconds.
This change will be part of the next major ISC-dhcpd release.
Tested by: bms, imp, and many many others.
Reviewed by: murray, eivind, dhclient folks