fix lint errors

This commit is contained in:
Siyuan 2025-10-10 13:56:07 +00:00
parent e47442d701
commit 59b7141d84
6 changed files with 38 additions and 59 deletions

View File

@ -9,7 +9,6 @@ import (
"github.com/jetkvm/kvm/pkg/nmlite/jetdhcpc" "github.com/jetkvm/kvm/pkg/nmlite/jetdhcpc"
"github.com/jetkvm/kvm/pkg/nmlite/udhcpc" "github.com/jetkvm/kvm/pkg/nmlite/udhcpc"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"github.com/vishvananda/netlink"
) )
// DHCPClient wraps the dhclient package for use in the network manager // DHCPClient wraps the dhclient package for use in the network manager
@ -19,7 +18,6 @@ type DHCPClient struct {
logger *zerolog.Logger logger *zerolog.Logger
client types.DHCPClient client types.DHCPClient
clientType string clientType string
link netlink.Link
// Configuration // Configuration
ipv4Enabled bool ipv4Enabled bool
@ -181,7 +179,9 @@ func (dc *DHCPClient) Renew() error {
} }
dc.logger.Info().Msg("renewing DHCP lease") dc.logger.Info().Msg("renewing DHCP lease")
dc.client.Renew() if err := dc.client.Renew(); err != nil {
return fmt.Errorf("failed to renew DHCP lease: %w", err)
}
return nil return nil
} }
@ -192,7 +192,9 @@ func (dc *DHCPClient) Release() error {
} }
dc.logger.Info().Msg("releasing DHCP lease") dc.logger.Info().Msg("releasing DHCP lease")
dc.client.Release() if err := dc.client.Release(); err != nil {
return fmt.Errorf("failed to release DHCP lease: %w", err)
}
return nil return nil
} }

View File

@ -256,38 +256,6 @@ func ToValidHostname(hostname string) string {
// ValidateHostname validates a hostname // ValidateHostname validates a hostname
func ValidateHostname(hostname string) error { func ValidateHostname(hostname string) error {
if hostname == "" { _, err := idna.Lookup.ToASCII(hostname)
return fmt.Errorf("hostname cannot be empty") return err
} }
validHostname := ToValidHostname(hostname)
if validHostname != hostname {
return fmt.Errorf("hostname contains invalid characters: %s", hostname)
}
if len(hostname) > 253 {
return fmt.Errorf("hostname too long: %d characters (max 253)", len(hostname))
}
// Check for valid characters (alphanumeric, hyphens, dots)
for _, char := range hostname {
if !((char >= 'a' && char <= 'z') ||
(char >= 'A' && char <= 'Z') ||
(char >= '0' && char <= '9') ||
char == '-' || char == '.') {
return fmt.Errorf("hostname contains invalid character: %c", char)
}
}
// Check that it doesn't start or end with hyphen
if strings.HasPrefix(hostname, "-") || strings.HasSuffix(hostname, "-") {
return fmt.Errorf("hostname cannot start or end with hyphen")
}
// Check that it doesn't start or end with dot
if strings.HasPrefix(hostname, ".") || strings.HasSuffix(hostname, ".") {
return fmt.Errorf("hostname cannot start or end with dot")
}
return nil
}

View File

@ -160,7 +160,9 @@ func (im *InterfaceManager) Stop() error {
// Stop DHCP client // Stop DHCP client
if im.dhcpClient != nil { if im.dhcpClient != nil {
im.dhcpClient.Stop() if err := im.dhcpClient.Stop(); err != nil {
return fmt.Errorf("failed to stop DHCP client: %w", err)
}
} }
im.logger.Info().Msg("interface manager stopped") im.logger.Info().Msg("interface manager stopped")
@ -241,7 +243,7 @@ func (im *InterfaceManager) GetIPv6Addresses() []string {
addresses = append(addresses, addr.Address.String()) addresses = append(addresses, addr.Address.String())
} }
return []string{} return addresses
} }
// GetMACAddress returns the MAC address of the interface // GetMACAddress returns the MAC address of the interface
@ -544,7 +546,9 @@ func (im *InterfaceManager) applyIPv6SLAACAndDHCP() error {
// Enable both SLAAC and DHCPv6 // Enable both SLAAC and DHCPv6
if im.dhcpClient != nil { if im.dhcpClient != nil {
im.dhcpClient.SetIPv6(true) im.dhcpClient.SetIPv6(true)
im.dhcpClient.Start() if err := im.dhcpClient.Start(); err != nil {
return fmt.Errorf("failed to start DHCP client: %w", err)
}
} }
return im.staticConfig.EnableIPv6SLAAC() return im.staticConfig.EnableIPv6SLAAC()
@ -644,15 +648,23 @@ func (im *InterfaceManager) SendRouterSolicitation() error {
func (im *InterfaceManager) handleLinkUp() { func (im *InterfaceManager) handleLinkUp() {
im.logger.Info().Msg("link up") im.logger.Info().Msg("link up")
im.applyConfiguration() if err := im.applyConfiguration(); err != nil {
im.logger.Error().Err(err).Msg("failed to apply configuration")
}
if im.config.IPv4Mode.String == "dhcp" { if im.config.IPv4Mode.String == "dhcp" {
im.dhcpClient.Renew() if err := im.dhcpClient.Renew(); err != nil {
im.logger.Error().Err(err).Msg("failed to renew DHCP lease")
}
} }
if im.config.IPv6Mode.String == "slaac" { if im.config.IPv6Mode.String == "slaac" {
im.staticConfig.EnableIPv6SLAAC() if err := im.staticConfig.EnableIPv6SLAAC(); err != nil {
im.SendRouterSolicitation() im.logger.Error().Err(err).Msg("failed to enable IPv6 SLAAC")
}
if err := im.SendRouterSolicitation(); err != nil {
im.logger.Error().Err(err).Msg("failed to send router solicitation")
}
} }
} }
@ -660,7 +672,9 @@ func (im *InterfaceManager) handleLinkDown() {
im.logger.Info().Msg("link down") im.logger.Info().Msg("link down")
if im.config.IPv4Mode.String == "dhcp" { if im.config.IPv4Mode.String == "dhcp" {
im.dhcpClient.Stop() if err := im.dhcpClient.Stop(); err != nil {
im.logger.Error().Err(err).Msg("failed to stop DHCP client")
}
} }
netlinkMgr := getNetlinkManager() netlinkMgr := getNetlinkManager()
@ -694,7 +708,6 @@ func (im *InterfaceManager) monitorInterfaceState() {
} }
} }
} }
} }
// updateStateFromDHCPLease updates the state from a DHCP lease // updateStateFromDHCPLease updates the state from a DHCP lease
@ -707,7 +720,6 @@ func (im *InterfaceManager) updateStateFromDHCPLease(lease *types.DHCPLease) {
family = link.AfInet6 family = link.AfInet6
} else { } else {
im.state.DHCPLease4 = lease im.state.DHCPLease4 = lease
family = link.AfInet
} }
im.stateMu.Unlock() im.stateMu.Unlock()

View File

@ -96,8 +96,7 @@ func (nm *NetworkManager) AddInterface(iface string, config *types.NetworkConfig
}) })
im.SetOnResolvConfChange(func(family int, resolvConf *types.InterfaceResolvConf) error { im.SetOnResolvConfChange(func(family int, resolvConf *types.InterfaceResolvConf) error {
nm.resolvConf.SetInterfaceConfig(iface, family, *resolvConf) return nm.resolvConf.SetInterfaceConfig(iface, family, *resolvConf)
return nil
}) })
nm.interfaces[iface] = im nm.interfaces[iface] = im

View File

@ -79,7 +79,9 @@ func (rcm *ResolvConfManager) SetInterfaceConfig(iface string, family int, confi
} }
rcm.mu.Unlock() rcm.mu.Unlock()
rcm.reconcileHostname() if err := rcm.reconcileHostname(); err != nil {
return fmt.Errorf("failed to reconcile hostname: %w", err)
}
return rcm.update() return rcm.update()
} }
@ -99,7 +101,9 @@ func (rcm *ResolvConfManager) SetConfig(resolvConf *types.ResolvConf) error {
// Reconcile reconciles the resolv.conf configuration // Reconcile reconciles the resolv.conf configuration
func (rcm *ResolvConfManager) Reconcile() error { func (rcm *ResolvConfManager) Reconcile() error {
rcm.reconcileHostname() if err := rcm.reconcileHostname(); err != nil {
return fmt.Errorf("failed to reconcile hostname: %w", err)
}
return rcm.update() return rcm.update()
} }

View File

@ -182,9 +182,3 @@ func (scm *StaticConfigManager) removeIPv4DefaultRoute() error {
netlinkMgr := getNetlinkManager() netlinkMgr := getNetlinkManager()
return netlinkMgr.RemoveDefaultRoute(link.AfInet) return netlinkMgr.RemoveDefaultRoute(link.AfInet)
} }
// enableIPv6 enables IPv6 on the interface
func (scm *StaticConfigManager) enableIPv6() error {
netlinkMgr := getNetlinkManager()
return netlinkMgr.EnableIPv6(scm.ifaceName)
}