types

package
v3.4.7 Latest Latest
Warning

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

Go to latest
Published: Apr 20, 2022 License: Apache-2.0 Imports: 2 Imported by: 11

Documentation

Index

Constants

View Source
const (
	// BridgeNetworkDriver defines the bridge driver
	BridgeNetworkDriver = "bridge"
	// DefaultNetworkDriver is the default network type used
	DefaultNetworkDriver = BridgeNetworkDriver
	// MacVLANNetworkDriver defines the macvlan driver
	MacVLANNetworkDriver = "macvlan"

	// IPAM drivers
	// HostLocalIPAMDriver store the ip
	HostLocalIPAMDriver = "host-local"
	// DHCPIPAMDriver get subnet and ip from dhcp server
	DHCPIPAMDriver = "dhcp"

	// DefaultSubnet is the name that will be used for the default CNI network.
	DefaultNetworkName = "podman"
	// DefaultSubnet is the subnet that will be used for the default CNI network.
	DefaultSubnet = "10.88.0.0/16"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ContainerNetwork

type ContainerNetwork interface {
	// NetworkCreate will take a partial filled Network and fill the
	// missing fields. It creates the Network and returns the full Network.
	NetworkCreate(Network) (Network, error)
	// NetworkRemove will remove the Network with the given name or ID.
	NetworkRemove(nameOrID string) error
	// NetworkList will return all known Networks. Optionally you can
	// supply a list of filter functions. Only if a network matches all
	// functions it is returned.
	NetworkList(...FilterFunc) ([]Network, error)
	// NetworkInspect will return the Network with the given name or ID.
	NetworkInspect(nameOrID string) (Network, error)

	// Setup will setup the container network namespace. It returns
	// a map of StatusBlocks, the key is the network name.
	Setup(namespacePath string, options SetupOptions) (map[string]StatusBlock, error)
	// Teardown will teardown the container network namespace.
	Teardown(namespacePath string, options TeardownOptions) error
}

type FilterFunc

type FilterFunc func(Network) bool

FilterFunc can be passed to NetworkList to filter the networks.

type IPNet

type IPNet struct {
	net.IPNet
}

IPNet is used as custom net.IPNet type to add Marshal/Unmarshal methods.

func ParseCIDR

func ParseCIDR(cidr string) (IPNet, error)

ParseCIDR parse a string to IPNet

func (*IPNet) MarshalText

func (n *IPNet) MarshalText() ([]byte, error)

func (*IPNet) UnmarshalText

func (n *IPNet) UnmarshalText(text []byte) error

type LeaseRange

type LeaseRange struct {
	// StartIP first IP in the subnet which should be used to assign ips.
	StartIP net.IP `json:"start_ip,omitempty"`
	// EndIP last IP in the subnet which should be used to assign ips.
	EndIP net.IP `json:"end_ip,omitempty"`
}

LeaseRange contains the range where IP are leased.

type NetAddress

type NetAddress struct {
	// Subnet of this NetAddress. Note that the subnet contains the
	// actual ip of the net interface and not the network address.
	Subnet IPNet `json:"subnet,omitempty"`
	// Gateway for the Subnet. This can be nil if there is no gateway, e.g. internal network.
	Gateway net.IP `json:"gateway,omitempty"`
}

NetAddress contains the subnet and gatway.

type NetInterface

type NetInterface struct {
	// Networks list of assigned subnets with their gateway.
	Networks []NetAddress `json:"networks,omitempty"`
	// MacAddress for this Interface.
	MacAddress net.HardwareAddr `json:"mac_address,omitempty"`
}

NetInterface contains the settings for a given network interface.

type Network

type Network struct {
	// Name of the Network.
	Name string `json:"name,omitempty"`
	// ID of the Network.
	ID string `json:"id,omitempty"`
	// Driver for this Network, e.g. bridge, macvlan...
	Driver string `json:"driver,omitempty"`
	// InterfaceName is the network interface name on the host.
	NetworkInterface string `json:"network_interface,omitempty"`
	// Created contains the timestamp when this network was created.
	// This is not guaranteed to stay exactly the same.
	Created time.Time
	// Subnets to use.
	Subnets []Subnet `json:"subnets,omitempty"`
	// IPv6Enabled if set to true an ipv6 subnet should be created for this net.
	IPv6Enabled bool `json:"ipv6_enabled"`
	// Internal is whether the Network should not have external routes
	// to public or other Networks.
	Internal bool `json:"internal"`
	// DNSEnabled is whether name resolution is active for container on
	// this Network.
	DNSEnabled bool `json:"dns_enabled"`
	// Labels is a set of key-value labels that have been applied to the
	// Network.
	Labels map[string]string `json:"labels,omitempty"`
	// Options is a set of key-value options that have been applied to
	// the Network.
	Options map[string]string `json:"options,omitempty"`
	// IPAMOptions contains options used for the ip assignment.
	IPAMOptions map[string]string `json:"ipam_options,omitempty"`
}

Network describes the Network attributes.

type NetworkOptions

type NetworkOptions struct {
	// ContainerID is the container id, used for iptables comments and ipam allocation.
	ContainerID string `json:"container_id,omitempty"`
	// ContainerName is the container name, used as dns name.
	ContainerName string `json:"container_name,omitempty"`
	// PortMappings contains the port mappings for this container
	PortMappings []PortMapping `json:"port_mappings,omitempty"`
	// Networks contains all networks with the PerNetworkOptions.
	// The map should contain at least one element.
	Networks map[string]PerNetworkOptions `json:"networks,omitempty"`
}

NetworkOptions for a given container.

type PerNetworkOptions

type PerNetworkOptions struct {
	// StaticIPv4 for this container. Optional.
	StaticIPs []net.IP `json:"static_ips,omitempty"`
	// Aliases contains a list of names which the dns server should resolve
	// to this container. Can only be set when DNSEnabled is true on the Network.
	// Optional.
	Aliases []string `json:"aliases,omitempty"`
	// StaticMac for this container. Optional.
	StaticMAC net.HardwareAddr `json:"static_mac,omitempty"`
	// InterfaceName for this container. Required.
	InterfaceName string `json:"interface_name,omitempty"`
}

PerNetworkOptions are options which should be set on a per network basis.

type PortMapping

type PortMapping struct {
	// HostIP is the IP that we will bind to on the host.
	// If unset, assumed to be 0.0.0.0 (all interfaces).
	HostIP string `json:"host_ip,omitempty"`
	// ContainerPort is the port number that will be exposed from the
	// container.
	// Mandatory.
	ContainerPort uint16 `json:"container_port"`
	// HostPort is the port number that will be forwarded from the host into
	// the container.
	// If omitted, a random port on the host (guaranteed to be over 1024)
	// will be assigned.
	HostPort uint16 `json:"host_port,omitempty"`
	// Range is the number of ports that will be forwarded, starting at
	// HostPort and ContainerPort and counting up.
	// This is 1-indexed, so 1 is assumed to be a single port (only the
	// Hostport:Containerport mapping will be added), 2 is two ports (both
	// Hostport:Containerport and Hostport+1:Containerport+1), etc.
	// If unset, assumed to be 1 (a single port).
	// Both hostport + range and containerport + range must be less than
	// 65536.
	Range uint16 `json:"range,omitempty"`
	// Protocol is the protocol forward.
	// Must be either "tcp", "udp", and "sctp", or some combination of these
	// separated by commas.
	// If unset, assumed to be TCP.
	Protocol string `json:"protocol,omitempty"`
}

PortMapping is one or more ports that will be mapped into the container.

type SetupOptions

type SetupOptions struct {
	NetworkOptions
}

type StatusBlock

type StatusBlock struct {
	// Interfaces contains the created network interface in the container.
	// The map key is the interface name.
	Interfaces map[string]NetInterface `json:"interfaces,omitempty"`
	// DNSServerIPs nameserver addresses which should be added to
	// the containers resolv.conf file.
	DNSServerIPs []net.IP `json:"dns_server_ips,omitempty"`
	// DNSSearchDomains search domains which should be added to
	// the containers resolv.conf file.
	DNSSearchDomains []string `json:"dns_search_domains,omitempty"`
}

StatusBlock contains the network information about a container connected to one Network.

type Subnet

type Subnet struct {
	// Subnet for this Network.
	Subnet IPNet `json:"subnet,omitempty"`
	// Gateway IP for this Network.
	Gateway net.IP `json:"gateway,omitempty"`
	// LeaseRange contains the range where IP are leased. Optional.
	LeaseRange *LeaseRange `json:"lease_range,omitempty"`
}

type TeardownOptions

type TeardownOptions struct {
	NetworkOptions
}

Jump to

Keyboard shortcuts

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