nmlite

package
v0.0.0-...-b878ba9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 12, 2026 License: GPL-2.0 Imports: 23 Imported by: 0

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func ToValidHostname

func ToValidHostname(hostname string) string

ToValidHostname converts a hostname to a valid format

func ValidateHostname

func ValidateHostname(hostname string) error

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) Release

func (dc *DHCPClient) Release() error

Release releases the DHCP lease

func (*DHCPClient) Renew

func (dc *DHCPClient) Renew() error

Renew renews the DHCP lease

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

func (*DHCPClient) Start

func (dc *DHCPClient) Start() error

Start starts the DHCP client

func (*DHCPClient) Stop

func (dc *DHCPClient) Stop() error

Stop stops the DHCP client

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

Directories

Path Synopsis
Package link provides a wrapper around netlink.Link and provides a singleton netlink manager.
Package link provides a wrapper around netlink.Link and provides a singleton netlink manager.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL