connection

package
v0.0.0-...-ebbddde Latest Latest
Warning

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

Go to latest
Published: Mar 25, 2019 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MAXUDPReceivedPacketSize = 8192
)

Variables

Functions

func CreateExecutor

func CreateExecutor(client *DhcpClient) bender.RequestExecutor

CreateExecutor creates a new DHCPv4 RequestExecutor.

func NewPacket

func NewPacket(dhcpOptions ...layers.DHCPOption) *layers.DHCPv4

func NewRequestFromOffer

func NewRequestFromOffer(packet *layers.DHCPv4) *layers.DHCPv4

func ParsePacket

func ParsePacket(data []byte, decoder gopacket.Decoder) *layers.DHCPv4

func WithNetboot

func WithNetboot(d *layers.DHCPv4)

WithNetboot adds bootfile URL and bootfile param options to a layers.DHCPv4 packet.

Types

type Callback

type Callback func(*Lease)

type DhcpClient

type DhcpClient struct {
	//ClientMac net.HardwareAddr
	Iface      *net.Interface
	BufferSize int
	// contains filtered or unexported fields
}

DhcpClient

func (*DhcpClient) Close

func (dc *DhcpClient) Close() error

func (*DhcpClient) GetRequestAndResponse

func (dc *DhcpClient) GetRequestAndResponse() (request int, response int)

func (*DhcpClient) Open

func (dc *DhcpClient) Open() error

func (*DhcpClient) Send

func (dc *DhcpClient) Send(packet *layers.DHCPv4, modifiers ...Modifier) *PacketResponse

func (*DhcpClient) Start

func (dc *DhcpClient) Start(size int, ifRequest bool, ifLog bool)

func (*DhcpClient) Stop

func (dc *DhcpClient) Stop()

type Dialer

type Dialer func(*net.UDPAddr, *net.UDPAddr) (net.Conn, error)

func UDPDialer

func UDPDialer() Dialer

type IPacketEventDispatcher

type IPacketEventDispatcher interface {
	AddEventListener(eventType string, handler PacketEventHandler)
	RemoveEventListener(eventType string)
	HasEventListener(eventType string) bool
	DispatchEvent(event PacketEvent)
}

type Lease

type Lease struct {
	ServerID     net.IP
	FixedAddress net.IP
	Netmask      net.IPMask
	NextServer   net.IP
	Broadcast    net.IP
	Router       []net.IP
	DNS          []net.IP
	TimeServer   []net.IP
	DomainName   string
	MTU          uint16

	Bound  time.Time
	Renew  time.Time
	Rebind time.Time
	Expire time.Time
}

func NewLease

func NewLease(packet *layers.DHCPv4) (msgType layers.DHCPMsgType, lease Lease)

type Listener

type Listener func(*net.Interface) (net.PacketConn, error)

func UDPListener

func UDPListener() Listener

type Modifier

type Modifier func(*layers.DHCPv4)

func WithBroadcast

func WithBroadcast(broadcast bool) Modifier

WithBroadcast sets the packet to be broadcast or unicast

func WithClientIP

func WithClientIP(ip net.IP) Modifier

WithClientIP sets the Client IP for a layers.DHCPv4 packet.

func WithGeneric

func WithGeneric(code layers.DHCPOpt, value []byte) Modifier

func WithHWType

func WithHWType(hwt layers.LinkType) Modifier

WithHWType sets the Hardware Type for a layers.DHCPv4 packet.

func WithHostName

func WithHostName(hostname string) Modifier

func WithHwAddr

func WithHwAddr(hwaddr net.HardwareAddr) Modifier

WithHwAddr sets the hardware address for a packet

func WithLeaseTime

func WithLeaseTime(leaseTime uint32) Modifier

WithLeaseTime adds or updates an OptIPAddressLeaseTime

func WithMessageType

func WithMessageType(m layers.DHCPMsgType) Modifier

WithMessageType adds the layers.DHCPv4 message type m to a packet.

func WithNetmask

func WithNetmask(mask net.IPMask) Modifier

WithNetmask adds or updates an OptSubnetMask

func WithOption

func WithOption(opt layers.DHCPOpt, data []byte) Modifier

WithOption appends a layers.DHCPv4 option provided by the user

func WithRelay

func WithRelay(ip net.IP) Modifier

WithRelay adds parameters required for layers.DHCPv4 to be relayed by the relay server with given ip

func WithReply

func WithReply(request *layers.DHCPv4) Modifier

WithReply fills in opcode, hwtype, xid, clienthwaddr, flags, and gateway ip addr from the given packet.

func WithRequestedOptions

func WithRequestedOptions(optionCodes ...layers.DHCPOpt) Modifier

WithRequestedOptions adds requested options to the packet.

func WithServerIP

func WithServerIP(ip net.IP) Modifier

WithServerIP sets the Server IP for a layers.DHCPv4 packet.

func WithTransactionID

func WithTransactionID(xid uint32) Modifier

WithTransactionID sets the Transaction ID for a layers.DHCPv4 packet.

func WithYourIP

func WithYourIP(ip net.IP) Modifier

WithYourIP sets the Your IP for a layers.DHCPv4 packet.

type PacketEvent

type PacketEvent struct {
	Target IPacketEventDispatcher
	Type   string
	// contains filtered or unexported fields
}

func NewEvent

func NewEvent(eventType string, object interface{}) PacketEvent

type PacketEventDispatcher

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

func (*PacketEventDispatcher) AddEventListener

func (pd *PacketEventDispatcher) AddEventListener(eventType string, handler PacketEventHandler)

func (*PacketEventDispatcher) DispatchEvent

func (pd *PacketEventDispatcher) DispatchEvent(event PacketEvent)

func (*PacketEventDispatcher) HasEventListener

func (pd *PacketEventDispatcher) HasEventListener(eventType string) bool

func (*PacketEventDispatcher) RemoveEventListener

func (pd *PacketEventDispatcher) RemoveEventListener(eventType string)

type PacketEventHandler

type PacketEventHandler func(e PacketEvent)

type PacketEventListener

type PacketEventListener struct {
	Type    string
	Handler PacketEventHandler
}

type PacketResponse

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

func NewPacketResponse

func NewPacketResponse() *PacketResponse

func (*PacketResponse) AddPacket

func (pr *PacketResponse) AddPacket(packet *layers.DHCPv4)

func (*PacketResponse) Call

func (pr *PacketResponse) Call(event PacketEvent)

type TransPort

type TransPort struct {
	Dialer   Dialer
	Listener Listener
}

func (*TransPort) Dial

func (t *TransPort) Dial(l *net.UDPAddr, r *net.UDPAddr) (net.Conn, error)

func (*TransPort) Listen

func (t *TransPort) Listen(l *net.Interface) (net.PacketConn, error)

Jump to

Keyboard shortcuts

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