vpnkit

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jan 3, 2018 License: Apache-2.0 Imports: 15 Imported by: 14

Documentation

Overview

Package vpnkit allows a running VPNKit service to be reconfigured.

Features

- expose/unexpose TCP and UDP ports

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Connection

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

Connection represents an open control connection to vpnkit

func NewConnection

func NewConnection(ctx context.Context, path string) (*Connection, error)

NewConnection connects to a vpnkit Unix domain socket on the given path and returns the connection

type DhcpRequest added in v0.2.0

type DhcpRequest struct {
	MAC net.HardwareAddr
}

DhcpRequest is a simple DHCP request

func NewDhcpRequest added in v0.2.0

func NewDhcpRequest(MAC net.HardwareAddr) *DhcpRequest

NewDhcpRequest constructs a DHCP request

func (*DhcpRequest) Bytes added in v0.2.0

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

Bytes returns the marshalled DHCP request

type Ethernet added in v0.2.0

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 added in v0.2.0

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

NewEthernet creates an Ethernet frame

func (*Ethernet) Write added in v0.2.0

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

Write marshals an Ethernet message

type EthernetFrame added in v0.2.0

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

EthernetFrame is an ethernet frame

func NewEthernetFrame added in v0.2.0

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

NewEthernetFrame constructs an Ethernet frame

func ParseEthernetFrame added in v0.2.0

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

ParseEthernetFrame parses the ethernet frame

func (*EthernetFrame) Bytes added in v0.2.0

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

Bytes returns the marshalled ethernet frame

func (*EthernetFrame) Write added in v0.2.0

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

Write marshals an Ethernet frame

type InitMessage added in v0.2.0

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

InitMessage is used for the initial version exchange

func (*InitMessage) String added in v0.2.0

func (m *InitMessage) String() string

String returns a human-readable string.

func (*InitMessage) Write added in v0.2.0

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

Write marshals an init message to a connection

type Ipv4 added in v0.2.0

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

Ipv4 is an IPv4 frame

func NewIpv4 added in v0.2.0

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

NewIpv4 constructs a new empty IPv4 packet

func ParseIpv4 added in v0.2.0

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

ParseIpv4 parses an IP packet

func (*Ipv4) Bytes added in v0.2.0

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

Bytes returns the marshalled IPv4 packet

func (*Ipv4) HeaderBytes added in v0.2.0

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

HeaderBytes returns the marshalled form of the IPv4 header

type PcapWriter added in v0.2.0

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

PcapWriter writes pcap-formatted packet streams

func NewPcapWriter added in v0.2.0

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

NewPcapWriter creates a PcapWriter and writes the initial header

func (*PcapWriter) Write added in v0.2.0

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

Write appends a packet with a pcap-format header

type Port

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

Port describes a UDP or TCP port forward

func ListExposed added in v0.2.0

func ListExposed(connection *Connection) ([]*Port, error)

ListExposed returns a list of currently exposed ports

func NewPort

func NewPort(connection *Connection, proto string, outIP net.IP, outPort uint16, inIP net.IP, inPort uint16) *Port

NewPort constructs an instance of Port

func (*Port) Expose

func (p *Port) Expose(ctx context.Context) error

Expose asks vpnkit to expose the port

func (*Port) InIP added in v0.2.0

func (p *Port) InIP() net.IP

InIP returns the private IP

func (*Port) InPort added in v0.2.0

func (p *Port) InPort() uint16

InPort returns the private port number

func (*Port) OutIP added in v0.2.0

func (p *Port) OutIP() net.IP

OutIP returns the public IP

func (*Port) OutPort added in v0.2.0

func (p *Port) OutPort() uint16

OutPort returns the public port number

func (*Port) Proto added in v0.2.0

func (p *Port) Proto() string

Proto returns the protocol: either "tcp" or "udp"

func (*Port) String added in v0.2.0

func (p *Port) String() string

String returns a human-readable string

func (*Port) Unexpose

func (p *Port) Unexpose(ctx context.Context) error

Unexpose asks vpnkit to hide the port again

type Udpv4 added in v0.2.0

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

Udpv4 is a Udpv4 frame

func NewUdpv4 added in v0.2.0

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

NewUdpv4 constructs a Udpv4 frame

func ParseUdpv4 added in v0.2.0

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

ParseUdpv4 parses a Udpv4 packet

func (*Udpv4) Bytes added in v0.2.0

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

Bytes returns the marshalled Udpv4 frame

func (*Udpv4) Write added in v0.2.0

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

Write marshalls a Udpv4 frame

type Vif added in v0.2.0

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 added in v0.2.0

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

Read reads the next packet from a Vif

func (*Vif) Write added in v0.2.0

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

Write writes a packet to a Vif

type Vmnet added in v0.2.0

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 NewVmnet added in v0.2.0

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

NewVmnet constructs an instance of Vmnet.

func (*Vmnet) Close added in v0.2.0

func (v *Vmnet) Close() error

Close closes the connection.

func (*Vmnet) ConnectVif added in v0.2.0

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

ConnectVif returns a connected network interface with the given uuid.

func (*Vmnet) ConnectVifIP added in v0.2.0

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.

Jump to

Keyboard shortcuts

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