no-op cleanup: switch to dhcp4.LeaseFromACK
This commit is contained in:
parent
8c55c5ba44
commit
5b34daeb4e
@ -126,37 +126,20 @@ func (c *Client) ObtainOrRenew() bool {
|
||||
}
|
||||
c.Ack = ack
|
||||
c.cfg.ClientIP = ack.YourClientIP.String()
|
||||
leaseTime := 10 * time.Minute // seems sensible as a fallback
|
||||
// As per RFC 2131 section 4.4.5:
|
||||
// renewal time defaults to 50% of the lease time
|
||||
var renewalTime *time.Duration
|
||||
|
||||
for _, opt := range dhcp4.ParseOptions(c.Ack.Options) {
|
||||
switch o := opt.(type) {
|
||||
case *dhcp4.OptSubnetMask:
|
||||
c.cfg.SubnetMask = fmt.Sprintf("%d.%d.%d.%d", o.Mask[0], o.Mask[1], o.Mask[2], o.Mask[3])
|
||||
|
||||
case *dhcp4.OptRouter:
|
||||
c.cfg.Router = o.Router.String()
|
||||
|
||||
case *dhcp4.OptDNS:
|
||||
c.cfg.DNS = make([]string, len(o.DNS))
|
||||
for idx, ip := range o.DNS {
|
||||
c.cfg.DNS[idx] = ip.String()
|
||||
}
|
||||
|
||||
case *dhcp4.OptLeaseTime:
|
||||
leaseTime = o.LeaseTime
|
||||
|
||||
case *dhcp4.OptT1:
|
||||
renewalTime = &o.T1
|
||||
lease := dhcp4.LeaseFromACK(ack)
|
||||
if mask := lease.Netmask; len(mask) > 0 {
|
||||
c.cfg.SubnetMask = fmt.Sprintf("%d.%d.%d.%d", mask[0], mask[1], mask[2], mask[3])
|
||||
}
|
||||
if len(lease.Router) > 0 {
|
||||
c.cfg.Router = lease.Router.String()
|
||||
}
|
||||
if len(lease.DNS) > 0 {
|
||||
c.cfg.DNS = make([]string, len(lease.DNS))
|
||||
for idx, ip := range lease.DNS {
|
||||
c.cfg.DNS[idx] = ip.String()
|
||||
}
|
||||
}
|
||||
if renewalTime == nil {
|
||||
d := time.Duration(float64(leaseTime) * 0.5)
|
||||
renewalTime = &d
|
||||
}
|
||||
c.cfg.RenewAfter = c.timeNow().Add(*renewalTime)
|
||||
c.cfg.RenewAfter = c.timeNow().Add(lease.RenewalTime)
|
||||
return true
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user