[Bug 1695702] [NEW] dhclient doen't renew a lease on raspberry pi
Takakazu Satoh
1695702 at bugs.launchpad.net
Sun Jun 4 07:40:32 UTC 2017
Public bug reported:
OS version: Ubuntu MATE 16.04 armhf
HW: raspberry pi 3B WITHOUT a battery backed up RTC
package verison: isc-dhcp-client 4.3.3-5ubuntu12.6
How to reproduce this bug: Power off a raspberry pi machine (without a battery backed up RTC: this is default)
longer than DCHP lease time. Then power it on. Then, DHCP lease is not renewed.
Work around: After correct date is set (by NTP or manually), reboot
again.
Cause of the bug: Right after boot, Rapsberry pi (without a battery
backed up RTC) uses the last shutdown time as a current time. When
dhclient obtains a DHCP lease, it sets a renewal time to the incorrect
current time plus renewal time and set an interval timer (which is
maintained by relative time). Sooner or later, the system gets correct
time from NTP and the system current time jumps. When the interval timer
expires, dhclient first compares current time (which is now correct) and
the lease expire time (which is computed based on incrrect time) and
shifts to the state EXPIRED. Cf. functions bind_lease() and
state_bound() in dhclient.c
Somehow, I cannot build dhclient from the source code obtained by apt-get source.
However, I could build dhclient (4.3.5) from a tarball from ISC website and the same problem occurred.
I modified some source files:
use clock_gettime(CLOCK_BOOTTIME, *) instead of gettimeofday in appropriate places
modify lease file read/write functions to convert time from boot to (possibly incorrect) time in GMT.
With the modifed dhclient, dhcp leases are correctly renewed on my machines, so far.
I use IPV4 over ethernet only and I have no idea what to do with tr.c (functions for token ring) which calls gettimeofday.
But if I understand correctly, I believe mixture use of absolute times and relative times is responsible for the bug.
** Affects: isc-dhcp (Ubuntu)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to isc-dhcp in Ubuntu.
https://bugs.launchpad.net/bugs/1695702
Title:
dhclient doen't renew a lease on raspberry pi
Status in isc-dhcp package in Ubuntu:
New
Bug description:
OS version: Ubuntu MATE 16.04 armhf
HW: raspberry pi 3B WITHOUT a battery backed up RTC
package verison: isc-dhcp-client 4.3.3-5ubuntu12.6
How to reproduce this bug: Power off a raspberry pi machine (without a battery backed up RTC: this is default)
longer than DCHP lease time. Then power it on. Then, DHCP lease is not renewed.
Work around: After correct date is set (by NTP or manually), reboot
again.
Cause of the bug: Right after boot, Rapsberry pi (without a battery
backed up RTC) uses the last shutdown time as a current time. When
dhclient obtains a DHCP lease, it sets a renewal time to the incorrect
current time plus renewal time and set an interval timer (which is
maintained by relative time). Sooner or later, the system gets correct
time from NTP and the system current time jumps. When the interval
timer expires, dhclient first compares current time (which is now
correct) and the lease expire time (which is computed based on
incrrect time) and shifts to the state EXPIRED. Cf. functions
bind_lease() and state_bound() in dhclient.c
Somehow, I cannot build dhclient from the source code obtained by apt-get source.
However, I could build dhclient (4.3.5) from a tarball from ISC website and the same problem occurred.
I modified some source files:
use clock_gettime(CLOCK_BOOTTIME, *) instead of gettimeofday in appropriate places
modify lease file read/write functions to convert time from boot to (possibly incorrect) time in GMT.
With the modifed dhclient, dhcp leases are correctly renewed on my machines, so far.
I use IPV4 over ethernet only and I have no idea what to do with tr.c (functions for token ring) which calls gettimeofday.
But if I understand correctly, I believe mixture use of absolute times and relative times is responsible for the bug.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1695702/+subscriptions
More information about the foundations-bugs
mailing list