Fix unnecessary retrying when the link is down in dhcp.
From the dhcp daemon log, we can see that dhcp will fail to acquire the lease when the link is down, and success on retry. ``` 2024/08/21 21:30:44 macvlan-dhcp/eth1: acquiring lease 2024/08/21 21:30:44 Link "eth1" down. Attempting to set up 2024/08/21 21:30:44 network is down 2024/08/21 21:30:44 retrying in 2.641696 seconds 2024/08/21 21:30:49 macvlan-dhcp/eth1: lease acquired, expiration is 2024-08-22 09:30:49.755367962 +0800 CST m=+43205.712107889 ``` After move the code of set up link to the beginning of the function, the dhcp success on first time. ``` 2024/08/21 22:04:02 macvlan-dhcp/eth1: acquiring lease 2024/08/21 22:04:02 Link "eth1" down. Attempting to set up 2024/08/21 22:04:05 macvlan-dhcp/eth1: lease acquired, expiration is 2024-08-22 10:04:05.297887726 +0800 CST m=+43203.081141304 ``` Signed-off-by: Songmin Li <lisongmin@protonmail.com>
This commit is contained in:
parent
5188dc8a19
commit
6269f399a5
@ -234,19 +234,19 @@ func (l *DHCPLease) getAllOptions() dhcp4.Options {
|
||||
}
|
||||
|
||||
func (l *DHCPLease) acquire() error {
|
||||
if (l.link.Attrs().Flags & net.FlagUp) != net.FlagUp {
|
||||
log.Printf("Link %q down. Attempting to set up", l.link.Attrs().Name)
|
||||
if err := netlink.LinkSetUp(l.link); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
c, err := newDHCPClient(l.link, l.timeout, l.broadcast)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer c.Close()
|
||||
|
||||
if (l.link.Attrs().Flags & net.FlagUp) != net.FlagUp {
|
||||
log.Printf("Link %q down. Attempting to set up", l.link.Attrs().Name)
|
||||
if err = netlink.LinkSetUp(l.link); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
opts := l.getAllOptions()
|
||||
|
||||
pkt, err := backoffRetry(l.resendMax, func() (*dhcp4.Packet, error) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user