fix dhcp6 logger

This commit is contained in:
Siyuan 2025-10-07 18:31:44 +00:00
parent 78f0479b6b
commit 45b55fe89f
3 changed files with 9 additions and 8 deletions

View File

@ -1,18 +1,18 @@
package jetdhcpc
import (
"log"
"net"
"time"
"github.com/insomniacslk/dhcp/dhcpv6"
"github.com/insomniacslk/dhcp/dhcpv6/nclient6"
"github.com/rs/zerolog"
"github.com/vishvananda/netlink"
)
// isIPv6LinkReady returns true if the interface has a link-local address
// which is not tentative.
func isIPv6LinkReady(l netlink.Link) (bool, error) {
func isIPv6LinkReady(l netlink.Link, logger *zerolog.Logger) (bool, error) {
addrs, err := netlink.AddrList(l, 10) // AF_INET6
if err != nil {
return false, err
@ -20,7 +20,7 @@ func isIPv6LinkReady(l netlink.Link) (bool, error) {
for _, addr := range addrs {
if addr.IP.IsLinkLocalUnicast() && (addr.Flags&0x40 == 0) { // IFA_F_TENTATIVE
if addr.Flags&0x80 != 0 { // IFA_F_DADFAILED
log.Printf("DADFAILED for %v, continuing anyhow", addr.IP)
logger.Warn().Str("address", addr.IP.String()).Msg("DADFAILED for address, continuing anyhow")
}
return true, nil
}
@ -30,7 +30,7 @@ func isIPv6LinkReady(l netlink.Link) (bool, error) {
// isIPv6RouteReady returns true if serverAddr is reachable.
func isIPv6RouteReady(serverAddr net.IP) waitForCondition {
return func(l netlink.Link) (bool, error) {
return func(l netlink.Link, logger *zerolog.Logger) (bool, error) {
if serverAddr.IsMulticast() {
return true, nil
}

View File

@ -4,10 +4,11 @@ import (
"context"
"time"
"github.com/rs/zerolog"
"github.com/vishvananda/netlink"
)
type waitForCondition func(l netlink.Link) (ready bool, err error)
type waitForCondition func(l netlink.Link, logger *zerolog.Logger) (ready bool, err error)
func (c *Client) waitFor(
link netlink.Link,
@ -15,18 +16,19 @@ func (c *Client) waitFor(
condition waitForCondition,
timeoutError error,
) error {
return waitFor(c.ctx, link, timeout, condition, timeoutError)
return waitFor(c.ctx, link, c.l, timeout, condition, timeoutError)
}
func waitFor(
ctx context.Context,
link netlink.Link,
logger *zerolog.Logger,
timeout <-chan time.Time,
condition waitForCondition,
timeoutError error,
) error {
for {
if ready, err := condition(link); err != nil {
if ready, err := condition(link, logger); err != nil {
return err
} else if ready {
break

View File

@ -419,7 +419,6 @@ func (nm *NetlinkManager) ReconcileLinkAddrs(link *Link, expected []*types.IPAdd
for _, addr := range expected {
ipCidr := addr.Address.IP.String() + "/" + addr.Address.Mask.String()
nm.logger.Trace().Str("address", ipCidr).Msg("adding expected address")
expectedAddrs[ipCidr] = true
}