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 package jetdhcpc
import ( import (
"log"
"net" "net"
"time" "time"
"github.com/insomniacslk/dhcp/dhcpv6" "github.com/insomniacslk/dhcp/dhcpv6"
"github.com/insomniacslk/dhcp/dhcpv6/nclient6" "github.com/insomniacslk/dhcp/dhcpv6/nclient6"
"github.com/rs/zerolog"
"github.com/vishvananda/netlink" "github.com/vishvananda/netlink"
) )
// isIPv6LinkReady returns true if the interface has a link-local address // isIPv6LinkReady returns true if the interface has a link-local address
// which is not tentative. // 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 addrs, err := netlink.AddrList(l, 10) // AF_INET6
if err != nil { if err != nil {
return false, err return false, err
@ -20,7 +20,7 @@ func isIPv6LinkReady(l netlink.Link) (bool, error) {
for _, addr := range addrs { for _, addr := range addrs {
if addr.IP.IsLinkLocalUnicast() && (addr.Flags&0x40 == 0) { // IFA_F_TENTATIVE if addr.IP.IsLinkLocalUnicast() && (addr.Flags&0x40 == 0) { // IFA_F_TENTATIVE
if addr.Flags&0x80 != 0 { // IFA_F_DADFAILED 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 return true, nil
} }
@ -30,7 +30,7 @@ func isIPv6LinkReady(l netlink.Link) (bool, error) {
// isIPv6RouteReady returns true if serverAddr is reachable. // isIPv6RouteReady returns true if serverAddr is reachable.
func isIPv6RouteReady(serverAddr net.IP) waitForCondition { 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() { if serverAddr.IsMulticast() {
return true, nil return true, nil
} }

View File

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

View File

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