dhcp

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: May 6, 2022 License: BSD-3-Clause Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DHCPv4Server added in v0.0.5

type DHCPv4Server interface {
	Serve() error
	Close() error
}

type DHCPv4ServerFactory added in v0.0.5

type DHCPv4ServerFactory interface {
	NewServer(listenInterface string, listenAddress string, handler server4.Handler) (DHCPv4Server, error)
}

type DefaultDHCPServerFactory added in v0.0.5

type DefaultDHCPServerFactory struct{}

func (*DefaultDHCPServerFactory) NewServer added in v0.0.5

func (f *DefaultDHCPServerFactory) NewServer(listenInterface string, listenAddress string, handler server4.Handler) (DHCPv4Server, error)

type DefaultResponderFactory added in v0.0.5

type DefaultResponderFactory struct{}

func (*DefaultResponderFactory) NewResponder added in v0.0.5

func (r *DefaultResponderFactory) NewResponder(listen *Listen) (Responder, error)

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 {
	MAC       string   `json:"mac"`
	IP        string   `json:"ip"`
	NetMask   string   `json:"netMask"`
	Gateway   string   `json:"gateway,omitempty"`
	DNS       []string `json:"dns,omitempty"`
	Options   []Option `json:"options,omitempty"`
	LeaseTime int      `json:"leaseTime,omitempty"`

	LastUpdate time.Time `json:"lastUpdate"`
}

type Listen

type Listen struct {
	Interface string `json:"interface,omitempty"`
	Subnet    string `json:"subnet"`
	Laddr     string `json:"laddr"`
}

type Listener

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

func NewListener

func NewListener(listen *Listen, handler ResponseGetter, serverFactory DHCPv4ServerFactory, responderFactory ResponderFactory) (*Listener, error)

func (*Listener) Handler

func (l *Listener) Handler(conn net.PacketConn, peer net.Addr, req *dhcpv4.DHCPv4)

func (*Listener) Serve

func (l *Listener) Serve() error

func (Listener) String

func (l Listener) String() string

type Option

type Option struct {
	ID    uint8  `json:"id"`
	Type  string `json:"type"`
	Value string `json:"value"`
}

type Responder

type Responder interface {
	Close()
	SendUnicast(resp *dhcpv4.DHCPv4, peer net.Addr) error
	SendBroadcast(resp *dhcpv4.DHCPv4) error
}

type ResponderFactory added in v0.0.5

type ResponderFactory interface {
	NewResponder(*Listen) (Responder, error)
}

type ResponseGetter

type ResponseGetter func(*dhcpv4.DHCPv4, *Listen) (*dhcpv4.DHCPv4, error)

type Server

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

func NewServer

func NewServer(config ServerConfig) *Server

func (*Server) Close added in v0.0.4

func (s *Server) Close()

func (*Server) HandleLease added in v0.0.4

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

func (*Server) HandleListen

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

func (*Server) HandleSubnet

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

func (*Server) StopListen added in v0.0.6

func (s *Server) StopListen(subnet string)

type ServerConfig added in v0.0.5

type ServerConfig struct {
	DHCPv4ServerFactory DHCPv4ServerFactory
	ResponderFactory    ResponderFactory
	HandleLease         func(*Lease) error
}

func GetDefaultServerConfig added in v0.0.5

func GetDefaultServerConfig(leaseHandler func(*Lease) error) ServerConfig

type SocketResponder added in v0.0.5

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

func (*SocketResponder) Close added in v0.0.5

func (r *SocketResponder) Close()

func (*SocketResponder) SendBroadcast added in v0.0.5

func (r *SocketResponder) SendBroadcast(resp *dhcpv4.DHCPv4) error

func (*SocketResponder) SendUnicast added in v0.0.5

func (r *SocketResponder) SendUnicast(resp *dhcpv4.DHCPv4, target net.Addr) error

type Subnet

type Subnet struct {
	Subnet    string   `json:"subnet"`
	RangeFrom string   `json:"rangeFrom"`
	RangeTo   string   `json:"rangeTo"`
	Gateway   string   `json:"gateway"`
	DNS       []string `json:"dns"`
	Options   []Option `json:"options"`
	LeaseTime int      `json:"leaseTime"`
	// contains filtered or unexported fields
}

func InitializeSubnet

func InitializeSubnet(subnet *Subnet) (*Subnet, error)

func (*Subnet) Contains added in v0.0.5

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

func (*Subnet) GetLeaseForMAC

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

Jump to

Keyboard shortcuts

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