Bug 31212
Summary: | pump renews lease immediately with Allied Telesyn AR220E as DHCP Server | ||||||
---|---|---|---|---|---|---|---|
Product: | [Retired] Red Hat Linux | Reporter: | Klaus Steinberger <klaus.steinberger> | ||||
Component: | pump | Assignee: | Elliot Lee <sopwith> | ||||
Status: | CLOSED RAWHIDE | QA Contact: | David Lawrence <dkl> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | medium | ||||||
Version: | 7.0 | ||||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | i386 | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2001-09-07 15:20:09 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Description
Klaus Steinberger
2001-03-09 20:04:40 UTC
Created attachment 31234 [details]
Supporting evidence for my additional comments concerning this bug
Hello, I encountered the same problem with a SyGate server. (As well, I noticed a coding error in the packet logging code.) Here's what I prepared for submission just before your submission showed up. It includes: a more detailed description of the problem (including logs etc. to help whoever resolves these things to do some verification), probable cause of the problem (I don't have enough time to set up a build environment to verify it), and a proposed fix. In a nutshell: Pump was doing 300 lease renewals per second to my DHCP server. Upon looking into this, I found that my DHCP server hands out VERY LARGE lease times (e.g. 0xffffff7f) (yes, they messed up on network byte ordering :-) ). But, that should still be acceptable because RFC 1533 says "32-bit unsigned integer". Unfortunately, pump does signed arithmetic to determine whether or not a lease has expired yet. So, the lease appears to pump to have expired as soon as it has arrived. Granted, lease times above 0x7fffffff don't likely occur too often in practice, but it's a one line fix, so I thought you might be interested. Also, there's a coding error in the pump/dhcp code feeding syslog. Attached please find pump_prob.tar.gz, containing: - README: This file - pump-0.8.11-1.src.rpm: The rpm from which I extracted source to inspect (www.rpmfind.net gave it as the one for RedHat 7.1 for i386) - var_log_messages-excerpts: Excerpts from /var/log/messages showing roughly 18,000 lease renewals per minute - var_log_daemondebug-excerpts: Excerpts from /var/log/daemondebug (which I set up to capture debug level syslog output from pump) showing protocol details of the DHCP client - server interaction. I believe that: 1) pump.c lines 394 and 395: tv.tv_sec = intf[closest].renewAt - pumpUptime(); if (tv.tv_sec <= 0) { should be replaced by: if( (unsigned)(intf[closest].renewAt) <= (unsigned)(pumpUptime()) { 2) dhcp.c line 735: snprintf (vendor2, 27, "%s 0x%02x", vendor, *vndptr++); should be replaced by: snprintf (vendor2, 28, "%s 0x%02x", vendor, *vndptr++); Then the lines in daemondebug.log would have been: ... pumpd[950]: bresp: vendor: 51 4 0xff 0xff 0xff 0x7f instead of: ... pumpd[950]: bresp: vendor: 51 4 0xff 0xff 0xff 0x7 Please feel free to contact me with any questions. - Doug K I think I've got all these in... Thanks for the info. |