dhcp

package
v0.0.0-...-2c01861 Latest Latest
Warning

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

Go to latest
Published: Feb 21, 2023 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func InitializeSubnet

func InitializeSubnet(subnet *Subnet, addrs LocalIPAddresses) error

Types

type BroadcastResponder

type BroadcastResponder struct {
	// contains filtered or unexported fields
}

func RawSocketBroadcastResponderFactory

func RawSocketBroadcastResponderFactory(ifName interfaceName, logger RLogger) (*BroadcastResponder, error)

func (*BroadcastResponder) Close

func (r *BroadcastResponder) Close()

func (*BroadcastResponder) Send

func (r *BroadcastResponder) Send(req Request, resp dhcpv4.DHCPv4) error

type CallbackSaveLeases

type CallbackSaveLeases func([]Response) error

type GenericLogger

type GenericLogger struct{}

func (*GenericLogger) Debugf

func (s *GenericLogger) Debugf(format string, args ...interface{})

func (*GenericLogger) Errorf

func (s *GenericLogger) Errorf(err error, format string, args ...interface{})

func (*GenericLogger) Infof

func (s *GenericLogger) Infof(format string, args ...interface{})

func (*GenericLogger) WithName

func (s *GenericLogger) WithName(_ string) RLogger

type Host

type Host struct {
	Subnet         string
	MAC            string
	IP             net.IP
	Gateway        net.IP
	ServerHostName string
	BootFileName   string
	DNS            []string
	Options        []Option
	LeaseTime      int
	HostName       string
}

type IPv4

type IPv4 uint32

func ParseIPv4

func ParseIPv4(s string) (IPv4, error)

func (*IPv4) Inc

func (i *IPv4) Inc()

func (*IPv4) Next

func (i *IPv4) Next() *IPv4

func (IPv4) String

func (i IPv4) String() string

type Lease

type Lease struct {
	Subnet         SubnetAddrPrefix
	MAC            string
	IP             net.IP
	NetMask        string
	Gateway        net.IP
	ServerHostName string
	BootFileName   string
	DNS            []string
	Options        []Option
	LeaseTime      int
	HostName       string
	ServerId       net.IP

	LastUpdate time.Time
	AckSent    bool
}

func (Lease) IsExpired

func (l Lease) IsExpired() bool

type Listen

type Listen struct {
	Name      string
	Interface string
	Addr      string
}

func (*Listen) ToString

func (l *Listen) ToString() string

type LocalIPAddresses

type LocalIPAddresses map[interfaceName][]net.IP

func GetLocalAddresses

func GetLocalAddresses() (LocalIPAddresses, error)

GetLocalAddresses return map "eth0": {"10.1.1.1", "10.2.2.2"}

type Option

type Option struct {
	ID    uint8
	Type  string
	Value string
}

type RLogger

type RLogger interface {
	Errorf(err error, format string, args ...interface{})
	Infof(msg string, args ...interface{})
	Debugf(format string, args ...interface{})
	WithName(string) RLogger
}

type Request

type Request struct {
	*dhcpv4.DHCPv4
	Src           net.Addr
	InterfaceName interfaceName
	Dst           net.IP
	// contains filtered or unexported fields
}

func (*Request) ToString

func (s *Request) ToString() string

type RequestProcessor

type RequestProcessor struct {
	// contains filtered or unexported fields
}

func NewRequestProcessor

func NewRequestProcessor(listen Listen,
	socketFactory SocketFactory,
	callbackSaveLeases CallbackSaveLeases,
	server *Server,
	logger RLogger) (*RequestProcessor, error)

func (*RequestProcessor) Close

func (s *RequestProcessor) Close()

func (*RequestProcessor) Serve

func (s *RequestProcessor) Serve() error

type Response

type Response struct {
	Request  Request
	Response dhcpv4.DHCPv4
	Lease    *Lease
}

func (*Response) Send

func (s *Response) Send() error

type ResponseGetter

type ResponseGetter func(req Request) (Response, error)

type Server

type Server struct {
	// contains filtered or unexported fields
}

func NewServer

func NewServer(c ServerConfig) (*Server, error)

func (*Server) AddHost

func (s *Server) AddHost(host Host) error

func (*Server) AddLease

func (s *Server) AddLease(lease *Lease) error

func (*Server) AddListen

func (s *Server) AddListen(listen Listen) error

func (*Server) AddSubnet

func (s *Server) AddSubnet(subnet Subnet) error

func (*Server) Close

func (s *Server) Close()

func (*Server) DeleteHost

func (s *Server) DeleteHost(host Host) error

func (*Server) DeleteLease

func (s *Server) DeleteLease(lease *Lease) error

func (*Server) DeleteListen

func (s *Server) DeleteListen(name string) error

func (*Server) DeleteSubnet

func (s *Server) DeleteSubnet(subnet SubnetAddrPrefix) error

func (*Server) GetLease

func (s *Server) GetLease(subnet SubnetAddrPrefix, mac string) *Lease

func (*Server) GetResponse

func (s *Server) GetResponse(req Request) (Response, error)

type ServerConfig

type ServerConfig struct {
	SocketFactory        SocketFactory
	LocalAddressesGetter func() (LocalIPAddresses, error)
	Logger               RLogger
	CallbackSaveLeases   CallbackSaveLeases
	Context              context.Context
}

type Socket

type Socket interface {
	NextRequest() (*Request, error)
	//SendResp(Response) error //TODO
	SendResponse(Request, dhcpv4.DHCPv4) error
	SendBroadcast(req Request, resp dhcpv4.DHCPv4) error
	Close()
}

func NewUDPSocket

func NewUDPSocket(listenAddress string, listenInterface string, logger RLogger) (Socket, error)

type SocketFactory

type SocketFactory func(listenAddress string, listenInterface string, logger RLogger) (Socket, error)

type Subnet

type Subnet struct {
	Subnet         SubnetAddrPrefix
	RangeFrom      string
	RangeTo        string
	Gateway        string
	DNS            []string
	Options        []Option
	LeaseTime      int
	ServerHostName string
	BootFileName   string
	// contains filtered or unexported fields
}

func (*Subnet) AddHost

func (s *Subnet) AddHost(h Host)

func (*Subnet) AddLease

func (s *Subnet) AddLease(l *Lease)

func (*Subnet) Contains

func (s *Subnet) Contains(ip net.IP) bool

func (*Subnet) DeleteHost

func (s *Subnet) DeleteHost(host Host)

func (*Subnet) DeleteLease

func (s *Subnet) DeleteLease(lease *Lease) error

func (*Subnet) GetLeaseForRequest

func (s *Subnet) GetLeaseForRequest(req *dhcpv4.DHCPv4) *Lease

func (*Subnet) NewLease

func (s *Subnet) NewLease(mac string, ip net.IP) *Lease

type SubnetAddrPrefix

type SubnetAddrPrefix string

type UDPSocket

type UDPSocket struct {
	// contains filtered or unexported fields
}

func (*UDPSocket) Close

func (s *UDPSocket) Close()

func (*UDPSocket) NextRequest

func (s *UDPSocket) NextRequest() (*Request, error)

func (*UDPSocket) SendBroadcast

func (s *UDPSocket) SendBroadcast(req Request, resp dhcpv4.DHCPv4) error

func (*UDPSocket) SendResponse

func (s *UDPSocket) SendResponse(req Request, resp dhcpv4.DHCPv4) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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