mirror of https://github.com/jetkvm/kvm.git
fix dhcp6 logger
This commit is contained in:
parent
78f0479b6b
commit
45b55fe89f
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue