package vmnet

import "github.com/moby/vpnkit/go/pkg/vmnet"

Index

Types

type DhcpRequest

type DhcpRequest struct {
	MAC net.HardwareAddr
}

DhcpRequest is a simple DHCP request

func NewDhcpRequest

func NewDhcpRequest(MAC net.HardwareAddr) *DhcpRequest

NewDhcpRequest constructs a DHCP request

func (*DhcpRequest) Bytes

func (d *DhcpRequest) Bytes() []byte

Bytes returns the marshalled DHCP request

type Ethernet

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

Ethernet requests the creation of a network connection with a given uuid and optional IP

func NewEthernet

func NewEthernet(uuid uuid.UUID, ip net.IP) *Ethernet

NewEthernet creates an Ethernet frame

func (*Ethernet) Write

func (m *Ethernet) Write(c net.Conn) error

Write marshals an Ethernet message

type EthernetFrame

type EthernetFrame struct {
	Dst  net.HardwareAddr
	Src  net.HardwareAddr
	Type uint16
	Data []byte
}

EthernetFrame is an ethernet frame

func NewEthernetFrame

func NewEthernetFrame(Dst, Src net.HardwareAddr, Type uint16) *EthernetFrame

NewEthernetFrame constructs an Ethernet frame

func ParseEthernetFrame

func ParseEthernetFrame(frame []byte) (*EthernetFrame, error)

ParseEthernetFrame parses the ethernet frame

func (*EthernetFrame) Bytes

func (e *EthernetFrame) Bytes() []byte

Bytes returns the marshalled ethernet frame

func (*EthernetFrame) Write

func (e *EthernetFrame) Write(w io.Writer) error

Write marshals an Ethernet frame

type InitMessage

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

InitMessage is used for the initial version exchange

func (*InitMessage) String

func (m *InitMessage) String() string

String returns a human-readable string.

func (*InitMessage) Write

func (m *InitMessage) Write(c net.Conn) error

Write marshals an init message to a connection

type Ipv4

type Ipv4 struct {
	Dst      net.IP
	Src      net.IP
	Data     []byte
	Checksum uint16
}

Ipv4 is an IPv4 frame

func NewIpv4

func NewIpv4(Dst, Src net.IP) *Ipv4

NewIpv4 constructs a new empty IPv4 packet

func ParseIpv4

func ParseIpv4(packet []byte) (*Ipv4, error)

ParseIpv4 parses an IP packet

func (*Ipv4) Bytes

func (i *Ipv4) Bytes() []byte

Bytes returns the marshalled IPv4 packet

func (*Ipv4) HeaderBytes

func (i *Ipv4) HeaderBytes() []byte

HeaderBytes returns the marshalled form of the IPv4 header

type PcapWriter

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

PcapWriter writes pcap-formatted packet streams

func NewPcapWriter

func NewPcapWriter(w io.Writer) (*PcapWriter, error)

NewPcapWriter creates a PcapWriter and writes the initial header

func (*PcapWriter) Write

func (p *PcapWriter) Write(packet []byte) error

Write appends a packet with a pcap-format header

type Udpv4

type Udpv4 struct {
	Src      uint16
	Dst      uint16
	Data     []byte
	Checksum uint16
}

Udpv4 is a Udpv4 frame

func NewUdpv4

func NewUdpv4(ipv4 *Ipv4, Dst, Src uint16, Data []byte) *Udpv4

NewUdpv4 constructs a Udpv4 frame

func ParseUdpv4

func ParseUdpv4(packet []byte) (*Udpv4, error)

ParseUdpv4 parses a Udpv4 packet

func (*Udpv4) Bytes

func (u *Udpv4) Bytes() []byte

Bytes returns the marshalled Udpv4 frame

func (*Udpv4) Write

func (u *Udpv4) Write(w io.Writer) error

Write marshalls a Udpv4 frame

type Vif

type Vif struct {
	MTU           uint16
	MaxPacketSize uint16
	ClientMAC     net.HardwareAddr
	IP            net.IP
	// contains filtered or unexported fields
}

Vif represents an Ethernet device

func (*Vif) Read

func (v *Vif) Read() ([]byte, error)

Read reads the next packet from a Vif

func (*Vif) Write

func (v *Vif) Write(packet []byte) error

Write writes a packet to a Vif

type Vmnet

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

Vmnet describes a "vmnet protocol" connection which allows ethernet frames to be sent to and received by vpnkit.

func New

func New(ctx context.Context, path string) (*Vmnet, error)

New constructs an instance of Vmnet.

func (*Vmnet) Close

func (v *Vmnet) Close() error

Close closes the connection.

func (*Vmnet) ConnectVif

func (v *Vmnet) ConnectVif(uuid uuid.UUID) (*Vif, error)

ConnectVif returns a connected network interface with the given uuid.

func (*Vmnet) ConnectVifIP

func (v *Vmnet) ConnectVifIP(uuid uuid.UUID, IP net.IP) (*Vif, error)

ConnectVifIP returns a connected network interface with the given uuid and IP. If the IP is already in use then return an error.

Source Files

vmnet.go

Version
v0.6.0 (latest)
Published
Apr 8, 2025
Platform
linux/amd64
Imports
9 packages
Last checked
10 hours ago

Tools for package owners.