diff --git a/plugins/ipam/dhcp/lease.go b/plugins/ipam/dhcp/lease.go index ffc379570..dcc7913f5 100644 --- a/plugins/ipam/dhcp/lease.go +++ b/plugins/ipam/dhcp/lease.go @@ -292,6 +292,11 @@ func (l *DHCPLease) maintain() { for { var sleepDur time.Duration + if _, err := netlink.LinkByName(l.link.Attrs().Name); err != nil { + log.Printf("%v: interface %s no longer exists, terminating lease maintenance", l.clientID, l.link.Attrs().Name) + return + } + switch state { case leaseStateBound: sleepDur = time.Until(l.renewalTime) @@ -336,6 +341,7 @@ func (l *DHCPLease) maintain() { log.Printf("%v: Checking lease", l.clientID) case <-l.stop: + log.Printf("%v: received stop signal, releasing lease", l.clientID) if err := l.release(); err != nil { log.Printf("%v: failed to release DHCP lease: %v", l.clientID, err) }