server4

package
v0.0.0-...-4b5a011 Latest Latest
Warning

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

Go to latest
Published: Jun 1, 2020 License: BSD-3-Clause Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewIPv4UDPConn

func NewIPv4UDPConn(iface string, addr *net.UDPAddr) (*net.UDPConn, error)

NewIPv4UDPConn returns a UDP connection bound to both the interface and port given based on a IPv4 DGRAM socket. The UDP connection allows broadcasting.

The interface must already be configured.

Types

type DebugLogger

type DebugLogger struct {
	// Printfer is used for actual output of the logger
	Printfer
}

DebugLogger is a wrapper for Printfer to implement interface Logger. DHCP messages are printed in the long format.

func (DebugLogger) PrintMessage

func (d DebugLogger) PrintMessage(prefix string, message *dhcpv4.DHCPv4)

PrintMessage prints a DHCP message in the long format via predefined Printfer

func (DebugLogger) Printf

func (d DebugLogger) Printf(format string, v ...interface{})

Printf prints a log message as-is via predefined Printfer

type EmptyLogger

type EmptyLogger struct{}

EmptyLogger prints nothing

func (EmptyLogger) PrintMessage

func (e EmptyLogger) PrintMessage(prefix string, message *dhcpv4.DHCPv4)

PrintMessage is just a dummy function that does nothing

func (EmptyLogger) Printf

func (e EmptyLogger) Printf(format string, v ...interface{})

Printf is just a dummy function that does nothing

type Handler

type Handler func(conn net.PacketConn, peer net.Addr, m *dhcpv4.DHCPv4)

Handler is a type that defines the handler function to be called every time a valid DHCPv4 message is received

type Logger

type Logger interface {
	// PrintMessage print _all_ DHCP messages
	PrintMessage(prefix string, message *dhcpv4.DHCPv4)

	// Printf is use to print the rest debugging information
	Printf(format string, v ...interface{})
}

Logger is a handler which will be used to output logging messages

type Printfer

type Printfer interface {
	// Printf is the function for logging output. Arguments are handled in the manner of fmt.Printf.
	Printf(format string, v ...interface{})
}

Printfer is used for actual output of the logger. For example *log.Logger is a Printfer.

type Server

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

Server represents a DHCPv4 server object

func NewServer

func NewServer(ifname string, addr *net.UDPAddr, handler Handler, opt ...ServerOpt) (*Server, error)

NewServer initializes and returns a new Server object

func (*Server) Close

func (s *Server) Close() error

Close sends a termination request to the server, and closes the UDP listener.

func (*Server) Serve

func (s *Server) Serve() error

Serve serves requests.

type ServerOpt

type ServerOpt func(s *Server)

ServerOpt adds optional configuration to a server.

func WithConn

func WithConn(c net.PacketConn) ServerOpt

WithConn configures the server with the given connection.

func WithDebugLogger

func WithDebugLogger() ServerOpt

WithDebugLogger logs multi-line full DHCPv4 messages when sent & received.

func WithLogger

func WithLogger(newLogger Logger) ServerOpt

WithLogger set the logger (see interface Logger).

func WithSummaryLogger

func WithSummaryLogger() ServerOpt

WithSummaryLogger logs one-line DHCPv4 message summaries when sent & received.

type ShortSummaryLogger

type ShortSummaryLogger struct {
	// Printfer is used for actual output of the logger
	Printfer
}

ShortSummaryLogger is a wrapper for Printfer to implement interface Logger. DHCP messages are printed in the short format.

func (ShortSummaryLogger) PrintMessage

func (s ShortSummaryLogger) PrintMessage(prefix string, message *dhcpv4.DHCPv4)

PrintMessage prints a DHCP message in the short format via predefined Printfer

func (ShortSummaryLogger) Printf

func (s ShortSummaryLogger) Printf(format string, v ...interface{})

Printf prints a log message as-is via predefined Printfer

Jump to

Keyboard shortcuts

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