Documentation
¶
Overview ¶
Package nmlite provides DHCP client functionality for the network manager.
Package nmlite provides a lightweight network management system. It supports multiple network interfaces with static and DHCP configuration, IPv4/IPv6 support, and proper separation of concerns.
Index ¶
- func ToValidHostname(hostname string) string
- func ValidateHostname(hostname string) error
- type DHCPClient
- func (dc *DHCPClient) Domain() string
- func (dc *DHCPClient) Lease4() *types.DHCPLease
- func (dc *DHCPClient) Lease6() *types.DHCPLease
- func (dc *DHCPClient) Release() error
- func (dc *DHCPClient) Renew() error
- func (dc *DHCPClient) SetIPv4(enabled bool)
- func (dc *DHCPClient) SetIPv6(enabled bool)
- func (dc *DHCPClient) SetOnLeaseChange(callback func(lease *types.DHCPLease))
- func (dc *DHCPClient) Start() error
- func (dc *DHCPClient) Stop() error
- type IfStateChangeReason
- type IfStateChangeReasons
- type InterfaceManager
- func (im *InterfaceManager) Domain() string
- func (im *InterfaceManager) GetConfig() *types.NetworkConfig
- func (im *InterfaceManager) GetIPv4Address() string
- func (im *InterfaceManager) GetIPv4Addresses() []string
- func (im *InterfaceManager) GetIPv6Address() string
- func (im *InterfaceManager) GetIPv6Addresses() []string
- func (im *InterfaceManager) GetMACAddress() string
- func (im *InterfaceManager) GetState() *types.InterfaceState
- func (im *InterfaceManager) IPv4Ready() bool
- func (im *InterfaceManager) IPv6Ready() bool
- func (im *InterfaceManager) IsOnline() bool
- func (im *InterfaceManager) IsUp() bool
- func (im *InterfaceManager) NTPServers() []net.IP
- func (im *InterfaceManager) ReconcileLinkAddrs(addrs []types.IPAddress, family int, protocol netlink.RouteProtocol) error
- func (im *InterfaceManager) RenewDHCPLease() error
- func (im *InterfaceManager) SendRouterSolicitation() error
- func (im *InterfaceManager) SetConfig(config *types.NetworkConfig) error
- func (im *InterfaceManager) SetOnConfigChange(callback func(config *types.NetworkConfig))
- func (im *InterfaceManager) SetOnDHCPLeaseChange(callback func(lease *types.DHCPLease))
- func (im *InterfaceManager) SetOnResolvConfChange(callback ResolvConfChangeCallback)
- func (im *InterfaceManager) SetOnStateChange(callback func(state types.InterfaceState))
- func (im *InterfaceManager) Start() error
- func (im *InterfaceManager) Stop() error
- type NetworkManager
- func (nm *NetworkManager) AddInterface(iface string, config *types.NetworkConfig) error
- func (nm *NetworkManager) CleanUpLegacyDHCPClients() error
- func (nm *NetworkManager) Domain() string
- func (nm *NetworkManager) FQDN() string
- func (nm *NetworkManager) GetIPv4Address() string
- func (nm *NetworkManager) GetIPv4Addresses() []string
- func (nm *NetworkManager) GetIPv6Address() string
- func (nm *NetworkManager) GetIPv6Addresses() []string
- func (nm *NetworkManager) GetInterface(iface string) (*InterfaceManager, error)
- func (nm *NetworkManager) GetInterfaceConfig(iface string) (*types.NetworkConfig, error)
- func (nm *NetworkManager) GetInterfaceState(iface string) (*types.InterfaceState, error)
- func (nm *NetworkManager) GetMACAddress() string
- func (nm *NetworkManager) Hostname() string
- func (nm *NetworkManager) IPv4Ready() bool
- func (nm *NetworkManager) IPv4String() string
- func (nm *NetworkManager) IPv6Ready() bool
- func (nm *NetworkManager) IPv6String() string
- func (nm *NetworkManager) IsOnline() bool
- func (nm *NetworkManager) IsUp() bool
- func (nm *NetworkManager) ListInterfaces() []string
- func (nm *NetworkManager) MACString() string
- func (nm *NetworkManager) NTPServerStrings() []string
- func (nm *NetworkManager) NTPServers() []net.IP
- func (nm *NetworkManager) RemoveInterface(iface string) error
- func (nm *NetworkManager) RenewDHCPLease(iface string) error
- func (nm *NetworkManager) SetHostname(hostname string, domain string) error
- func (nm *NetworkManager) SetInterfaceConfig(iface string, config *types.NetworkConfig) error
- func (nm *NetworkManager) SetOnConfigChange(callback func(iface string, config *types.NetworkConfig))
- func (nm *NetworkManager) SetOnDHCPLeaseChange(callback func(iface string, lease *types.DHCPLease))
- func (nm *NetworkManager) SetOnInterfaceStateChange(callback func(iface string, state types.InterfaceState))
- func (nm *NetworkManager) Stop() error
- type ResolvConfChangeCallback
- type ResolvConfManager
- func (hm *ResolvConfManager) Domain() string
- func (hm *ResolvConfManager) FQDN() string
- func (hm *ResolvConfManager) GetCurrentFQDN() (string, error)
- func (hm *ResolvConfManager) GetCurrentHostname() (string, error)
- func (hm *ResolvConfManager) Hostname() string
- func (rcm *ResolvConfManager) Reconcile() error
- func (rcm *ResolvConfManager) SetConfig(resolvConf *types.ResolvConf) error
- func (hm *ResolvConfManager) SetHostname(hostname, domain string) error
- func (rcm *ResolvConfManager) SetInterfaceConfig(iface string, family int, config types.InterfaceResolvConf) error
- type StaticConfigManager
- func (scm *StaticConfigManager) DisableIPv4() error
- func (scm *StaticConfigManager) DisableIPv6() error
- func (scm *StaticConfigManager) EnableIPv6LinkLocal() error
- func (scm *StaticConfigManager) EnableIPv6SLAAC() error
- func (scm *StaticConfigManager) ToIPv4Static(config *types.IPv4StaticConfig) (*types.ParsedIPConfig, error)
- func (scm *StaticConfigManager) ToIPv6Static(config *types.IPv6StaticConfig) (*types.ParsedIPConfig, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ToValidHostname ¶
ToValidHostname converts a hostname to a valid format
func ValidateHostname ¶
ValidateHostname validates a hostname
Types ¶
type DHCPClient ¶
type DHCPClient struct {
// contains filtered or unexported fields
}
DHCPClient wraps the dhclient package for use in the network manager
func NewDHCPClient ¶
func NewDHCPClient(ctx context.Context, ifaceName string, logger *zerolog.Logger, clientType string) (*DHCPClient, error)
NewDHCPClient creates a new DHCP client
func (*DHCPClient) Domain ¶
func (dc *DHCPClient) Domain() string
func (*DHCPClient) Lease4 ¶
func (dc *DHCPClient) Lease4() *types.DHCPLease
func (*DHCPClient) Lease6 ¶
func (dc *DHCPClient) Lease6() *types.DHCPLease
func (*DHCPClient) SetIPv4 ¶
func (dc *DHCPClient) SetIPv4(enabled bool)
SetIPv4 enables or disables IPv4 DHCP
func (*DHCPClient) SetIPv6 ¶
func (dc *DHCPClient) SetIPv6(enabled bool)
SetIPv6 enables or disables IPv6 DHCP
func (*DHCPClient) SetOnLeaseChange ¶
func (dc *DHCPClient) SetOnLeaseChange(callback func(lease *types.DHCPLease))
SetOnLeaseChange sets the callback for lease changes
type IfStateChangeReason ¶
type IfStateChangeReason uint
const ( IfStateOperStateChanged IfStateChangeReason = 1 IfStateOnlineStateChanged IfStateChangeReason = 2 IfStateMACAddressChanged IfStateChangeReason = 3 IfStateIPAddressesChanged IfStateChangeReason = 4 )
func (IfStateChangeReason) String ¶
func (r IfStateChangeReason) String() string
type IfStateChangeReasons ¶
type IfStateChangeReasons []IfStateChangeReason
func (IfStateChangeReasons) String ¶
func (rs IfStateChangeReasons) String() string
type InterfaceManager ¶
type InterfaceManager struct {
// contains filtered or unexported fields
}
InterfaceManager manages a single network interface
func NewInterfaceManager ¶
func NewInterfaceManager(ctx context.Context, ifaceName string, config *types.NetworkConfig, logger *zerolog.Logger) (*InterfaceManager, error)
NewInterfaceManager creates a new interface manager
func (*InterfaceManager) Domain ¶
func (im *InterfaceManager) Domain() string
func (*InterfaceManager) GetConfig ¶
func (im *InterfaceManager) GetConfig() *types.NetworkConfig
GetConfig returns the current interface configuration
func (*InterfaceManager) GetIPv4Address ¶
func (im *InterfaceManager) GetIPv4Address() string
GetIPv4Address returns the IPv4 address of the interface
func (*InterfaceManager) GetIPv4Addresses ¶
func (im *InterfaceManager) GetIPv4Addresses() []string
GetIPv4Addresses returns the IPv4 addresses of the interface
func (*InterfaceManager) GetIPv6Address ¶
func (im *InterfaceManager) GetIPv6Address() string
GetIPv6Address returns the IPv6 address of the interface
func (*InterfaceManager) GetIPv6Addresses ¶
func (im *InterfaceManager) GetIPv6Addresses() []string
GetIPv6Addresses returns the IPv6 addresses of the interface
func (*InterfaceManager) GetMACAddress ¶
func (im *InterfaceManager) GetMACAddress() string
GetMACAddress returns the MAC address of the interface
func (*InterfaceManager) GetState ¶
func (im *InterfaceManager) GetState() *types.InterfaceState
GetState returns the current interface state
func (*InterfaceManager) IPv4Ready ¶
func (im *InterfaceManager) IPv4Ready() bool
IPv4Ready returns true if the interface has an IPv4 address
func (*InterfaceManager) IPv6Ready ¶
func (im *InterfaceManager) IPv6Ready() bool
IPv6Ready returns true if the interface has an IPv6 address
func (*InterfaceManager) IsOnline ¶
func (im *InterfaceManager) IsOnline() bool
IsOnline returns true if the interface is online
func (*InterfaceManager) IsUp ¶
func (im *InterfaceManager) IsUp() bool
IsUp returns true if the interface is up
func (*InterfaceManager) NTPServers ¶
func (im *InterfaceManager) NTPServers() []net.IP
NTPServers returns the NTP servers of the interface
func (*InterfaceManager) ReconcileLinkAddrs ¶
func (im *InterfaceManager) ReconcileLinkAddrs(addrs []types.IPAddress, family int, protocol netlink.RouteProtocol) error
ReconcileLinkAddrs reconciles the link addresses
func (*InterfaceManager) RenewDHCPLease ¶
func (im *InterfaceManager) RenewDHCPLease() error
RenewDHCPLease renews the DHCP lease
func (*InterfaceManager) SendRouterSolicitation ¶
func (im *InterfaceManager) SendRouterSolicitation() error
SendRouterSolicitation sends a router solicitation
func (*InterfaceManager) SetConfig ¶
func (im *InterfaceManager) SetConfig(config *types.NetworkConfig) error
SetConfig updates the interface configuration
func (*InterfaceManager) SetOnConfigChange ¶
func (im *InterfaceManager) SetOnConfigChange(callback func(config *types.NetworkConfig))
SetOnConfigChange sets the callback for configuration changes
func (*InterfaceManager) SetOnDHCPLeaseChange ¶
func (im *InterfaceManager) SetOnDHCPLeaseChange(callback func(lease *types.DHCPLease))
SetOnDHCPLeaseChange sets the callback for DHCP lease changes
func (*InterfaceManager) SetOnResolvConfChange ¶
func (im *InterfaceManager) SetOnResolvConfChange(callback ResolvConfChangeCallback)
SetOnResolvConfChange sets the callback for resolv.conf changes
func (*InterfaceManager) SetOnStateChange ¶
func (im *InterfaceManager) SetOnStateChange(callback func(state types.InterfaceState))
SetOnStateChange sets the callback for state changes
func (*InterfaceManager) Start ¶
func (im *InterfaceManager) Start() error
Start starts managing the interface
func (*InterfaceManager) Stop ¶
func (im *InterfaceManager) Stop() error
Stop stops managing the interface
type NetworkManager ¶
type NetworkManager struct {
// contains filtered or unexported fields
}
NetworkManager manages multiple network interfaces
func NewNetworkManager ¶
func NewNetworkManager(ctx context.Context, logger *zerolog.Logger) *NetworkManager
NewNetworkManager creates a new network manager
func (*NetworkManager) AddInterface ¶
func (nm *NetworkManager) AddInterface(iface string, config *types.NetworkConfig) error
AddInterface adds a new network interface to be managed
func (*NetworkManager) CleanUpLegacyDHCPClients ¶
func (nm *NetworkManager) CleanUpLegacyDHCPClients() error
CleanUpLegacyDHCPClients cleans up legacy DHCP clients
func (*NetworkManager) Domain ¶
func (nm *NetworkManager) Domain() string
Domain returns the effective domain for the network manager
func (*NetworkManager) FQDN ¶
func (nm *NetworkManager) FQDN() string
func (*NetworkManager) GetIPv4Address ¶
func (nm *NetworkManager) GetIPv4Address() string
func (*NetworkManager) GetIPv4Addresses ¶
func (nm *NetworkManager) GetIPv4Addresses() []string
func (*NetworkManager) GetIPv6Address ¶
func (nm *NetworkManager) GetIPv6Address() string
func (*NetworkManager) GetIPv6Addresses ¶
func (nm *NetworkManager) GetIPv6Addresses() []string
func (*NetworkManager) GetInterface ¶
func (nm *NetworkManager) GetInterface(iface string) (*InterfaceManager, error)
GetInterface returns the interface manager for a specific interface
func (*NetworkManager) GetInterfaceConfig ¶
func (nm *NetworkManager) GetInterfaceConfig(iface string) (*types.NetworkConfig, error)
GetInterfaceConfig returns the current configuration of a specific interface
func (*NetworkManager) GetInterfaceState ¶
func (nm *NetworkManager) GetInterfaceState(iface string) (*types.InterfaceState, error)
GetInterfaceState returns the current state of a specific interface
func (*NetworkManager) GetMACAddress ¶
func (nm *NetworkManager) GetMACAddress() string
func (*NetworkManager) Hostname ¶
func (nm *NetworkManager) Hostname() string
func (*NetworkManager) IPv4Ready ¶
func (nm *NetworkManager) IPv4Ready() bool
func (*NetworkManager) IPv4String ¶
func (nm *NetworkManager) IPv4String() string
func (*NetworkManager) IPv6Ready ¶
func (nm *NetworkManager) IPv6Ready() bool
func (*NetworkManager) IPv6String ¶
func (nm *NetworkManager) IPv6String() string
func (*NetworkManager) IsOnline ¶
func (nm *NetworkManager) IsOnline() bool
func (*NetworkManager) IsUp ¶
func (nm *NetworkManager) IsUp() bool
func (*NetworkManager) ListInterfaces ¶
func (nm *NetworkManager) ListInterfaces() []string
ListInterfaces returns a list of all managed interfaces
func (*NetworkManager) MACString ¶
func (nm *NetworkManager) MACString() string
func (*NetworkManager) NTPServerStrings ¶
func (nm *NetworkManager) NTPServerStrings() []string
func (*NetworkManager) NTPServers ¶
func (nm *NetworkManager) NTPServers() []net.IP
func (*NetworkManager) RemoveInterface ¶
func (nm *NetworkManager) RemoveInterface(iface string) error
RemoveInterface removes a network interface from management
func (*NetworkManager) RenewDHCPLease ¶
func (nm *NetworkManager) RenewDHCPLease(iface string) error
RenewDHCPLease renews the DHCP lease for a specific interface
func (*NetworkManager) SetHostname ¶
func (nm *NetworkManager) SetHostname(hostname string, domain string) error
SetHostname sets the hostname and domain for the network manager
func (*NetworkManager) SetInterfaceConfig ¶
func (nm *NetworkManager) SetInterfaceConfig(iface string, config *types.NetworkConfig) error
SetInterfaceConfig updates the configuration of a specific interface
func (*NetworkManager) SetOnConfigChange ¶
func (nm *NetworkManager) SetOnConfigChange(callback func(iface string, config *types.NetworkConfig))
SetOnConfigChange sets the callback for configuration changes
func (*NetworkManager) SetOnDHCPLeaseChange ¶
func (nm *NetworkManager) SetOnDHCPLeaseChange(callback func(iface string, lease *types.DHCPLease))
SetOnDHCPLeaseChange sets the callback for DHCP lease changes
func (*NetworkManager) SetOnInterfaceStateChange ¶
func (nm *NetworkManager) SetOnInterfaceStateChange(callback func(iface string, state types.InterfaceState))
SetOnInterfaceStateChange sets the callback for interface state changes
func (*NetworkManager) Stop ¶
func (nm *NetworkManager) Stop() error
Stop stops the network manager and all managed interfaces
type ResolvConfChangeCallback ¶
type ResolvConfChangeCallback func(family int, resolvConf *types.InterfaceResolvConf) error
type ResolvConfManager ¶
type ResolvConfManager struct {
// contains filtered or unexported fields
}
ResolvConfManager manages the resolv.conf file
func NewResolvConfManager ¶
func NewResolvConfManager(logger *zerolog.Logger) *ResolvConfManager
NewResolvConfManager creates a new resolv.conf manager
func (*ResolvConfManager) Domain ¶
func (hm *ResolvConfManager) Domain() string
func (*ResolvConfManager) FQDN ¶
func (hm *ResolvConfManager) FQDN() string
func (*ResolvConfManager) GetCurrentFQDN ¶
func (hm *ResolvConfManager) GetCurrentFQDN() (string, error)
GetCurrentFQDN returns the current FQDN
func (*ResolvConfManager) GetCurrentHostname ¶
func (hm *ResolvConfManager) GetCurrentHostname() (string, error)
GetCurrentHostname returns the current system hostname
func (*ResolvConfManager) Hostname ¶
func (hm *ResolvConfManager) Hostname() string
func (*ResolvConfManager) Reconcile ¶
func (rcm *ResolvConfManager) Reconcile() error
Reconcile reconciles the resolv.conf configuration
func (*ResolvConfManager) SetConfig ¶
func (rcm *ResolvConfManager) SetConfig(resolvConf *types.ResolvConf) error
SetConfig sets the resolv.conf configuration
func (*ResolvConfManager) SetHostname ¶
func (hm *ResolvConfManager) SetHostname(hostname, domain string) error
SetHostname sets the system hostname and updates /etc/hosts
func (*ResolvConfManager) SetInterfaceConfig ¶
func (rcm *ResolvConfManager) SetInterfaceConfig(iface string, family int, config types.InterfaceResolvConf) error
SetInterfaceConfig sets the resolv.conf configuration for a specific interface
type StaticConfigManager ¶
type StaticConfigManager struct {
// contains filtered or unexported fields
}
StaticConfigManager manages static network configuration
func NewStaticConfigManager ¶
func NewStaticConfigManager(ifaceName string, logger *zerolog.Logger) (*StaticConfigManager, error)
NewStaticConfigManager creates a new static configuration manager
func (*StaticConfigManager) DisableIPv4 ¶
func (scm *StaticConfigManager) DisableIPv4() error
DisableIPv4 disables IPv4 on the interface
func (*StaticConfigManager) DisableIPv6 ¶
func (scm *StaticConfigManager) DisableIPv6() error
DisableIPv6 disables IPv6 on the interface
func (*StaticConfigManager) EnableIPv6LinkLocal ¶
func (scm *StaticConfigManager) EnableIPv6LinkLocal() error
EnableIPv6LinkLocal enables IPv6 link-local only
func (*StaticConfigManager) EnableIPv6SLAAC ¶
func (scm *StaticConfigManager) EnableIPv6SLAAC() error
EnableIPv6SLAAC enables IPv6 SLAAC
func (*StaticConfigManager) ToIPv4Static ¶
func (scm *StaticConfigManager) ToIPv4Static(config *types.IPv4StaticConfig) (*types.ParsedIPConfig, error)
ToIPv4Static applies static IPv4 configuration
func (*StaticConfigManager) ToIPv6Static ¶
func (scm *StaticConfigManager) ToIPv6Static(config *types.IPv6StaticConfig) (*types.ParsedIPConfig, error)
ToIPv6Static applies static IPv6 configuration