addressing

package
v0.8.1 Latest Latest
Warning

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

Go to latest
Published: Apr 6, 2017 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DefaultIPv6Prefix is the prefix for all the IPv6 addresses.
	DefaultIPv6Prefix = "f00d::"
	// DefaultIPv6PrefixLen is the length used to allocate container IPv6 addresses from.
	DefaultIPv6PrefixLen = 112
	// DefaultIPv4Prefix is the prefix for all the IPv4 addresses.
	// %d is substituted with the last byte of first global IPv4 address
	// configured on the system.
	DefaultIPv4Prefix = "10.%d.0.1"
	// DefaultIPv4PrefixLen is the length used to allocate container IPv4 addresses from.
	DefaultIPv4PrefixLen = 16
	// DefaultIPv4ClusterPrefixLen is the IPv4 prefix length of the entire cluster.
	DefaultIPv4ClusterPrefixLen = 8
	// DefaultNAT46Prefix is the IPv6 prefix to represent NATed IPv4 addresses.
	DefaultNAT46Prefix = "0:0:0:0:0:FFFF::/96"
)

Variables

View Source
var (

	// ClusterIPv6Mask represents the CIDR Mask for an entire cluster.
	ClusterIPv6Mask = net.CIDRMask(64, 128)
	// NodeIPv6Mask represents the CIDR Mask for the cilium node.
	NodeIPv6Mask = net.CIDRMask(96, 128)
	// StateIPv6Mask represents the CIDR Mask for the state position.
	StateIPv6Mask = net.CIDRMask(112, 128)

	// ContainerIPv6Mask is the IPv6 prefix length for address assigned to
	// container. The default is L3 only and thus /128.
	ContainerIPv6Mask = net.CIDRMask(128, 128)
	// ContainerIPv4Mask is the IPv4 prefix length for address assigned to
	// container. The default is L3 only and thus /32.
	ContainerIPv4Mask = net.CIDRMask(32, 32)

	// IPv6DefaultRoute is the default IPv6 route.
	IPv6DefaultRoute = net.IPNet{IP: net.IPv6zero, Mask: net.CIDRMask(0, 128)}
	// IPv4DefaultRoute is the default IPv4 route.
	IPv4DefaultRoute = net.IPNet{IP: net.IPv4zero, Mask: net.CIDRMask(0, 32)}
)
View Source
var (
	ErrIPv4Invalid         = errors.New("Invalid IPv4 address")
	ErrIPv4NotConfigured   = errors.New("No IPv4 address configured")
	ErrNodeIPEndpointIDSet = errors.New("Endpoint ID set in IPv6 node address")
	ErrNodeIDZero          = errors.New("Node ID is zero (invalid)")
)

Functions

This section is empty.

Types

type CiliumIP

type CiliumIP interface {
	NodeID() uint32
	State() uint16
	EndpointID() uint16
	IPNet(ones int) *net.IPNet
	EndpointPrefix() *net.IPNet
	IP() net.IP
	String() string
	IsIPv6() bool
}

type CiliumIPv4

type CiliumIPv4 []byte

func DeriveCiliumIPv4

func DeriveCiliumIPv4(src net.IP) CiliumIPv4

func NewCiliumIPv4

func NewCiliumIPv4(address string) (CiliumIPv4, error)

func (CiliumIPv4) EndpointID

func (ip CiliumIPv4) EndpointID() uint16

func (CiliumIPv4) EndpointPrefix

func (ip CiliumIPv4) EndpointPrefix() *net.IPNet

func (CiliumIPv4) IP

func (ip CiliumIPv4) IP() net.IP

func (CiliumIPv4) IPAMReq

func (ip CiliumIPv4) IPAMReq() ipam.IPAMReq

func (CiliumIPv4) IPNet

func (ip CiliumIPv4) IPNet(ones int) *net.IPNet

func (CiliumIPv4) IsIPv6

func (ip CiliumIPv4) IsIPv6() bool

func (CiliumIPv4) MarshalJSON

func (ip CiliumIPv4) MarshalJSON() ([]byte, error)

func (CiliumIPv4) NodeID

func (ip CiliumIPv4) NodeID() uint32

func (CiliumIPv4) NodeIP

func (ip CiliumIPv4) NodeIP() net.IP

NodeIP returns the node's IP based on an endpoint IP of the local node.

func (CiliumIPv4) State

func (ip CiliumIPv4) State() uint16

func (CiliumIPv4) String

func (ip CiliumIPv4) String() string

func (*CiliumIPv4) UnmarshalJSON

func (ip *CiliumIPv4) UnmarshalJSON(b []byte) error

func (CiliumIPv4) ValidContainerIP

func (ip CiliumIPv4) ValidContainerIP() bool

ValidContainerIP returns true if the IPv4 address is a valid IP for a container. To be valid must obey to the following rules: - Node ID, bits from 0 to 16, must be different than 0 - Endpoint ID, bits from 16 to 32, must be different than 0

func (CiliumIPv4) ValidNodeIP

func (ip CiliumIPv4) ValidNodeIP() bool

ValidNodeIP returns true if the IPv4 address is a valid IP of a node.

type CiliumIPv6

type CiliumIPv6 []byte

func DeriveCiliumIPv6

func DeriveCiliumIPv6(src net.IP) CiliumIPv6

func NewCiliumIPv6

func NewCiliumIPv6(address string) (CiliumIPv6, error)

NewCiliumIPv6 returns a IPv6 if the given `address` is: - An IPv6 address. - Node ID, bits from 112 to 120, must be different than 0 - Endpoint ID, bits from 120 to 128, must be equal to 0

func (CiliumIPv6) EndpointID

func (ip CiliumIPv6) EndpointID() uint16

EndpointID returns the container ID portion of the address or 0.

func (CiliumIPv6) EndpointPrefix

func (ip CiliumIPv6) EndpointPrefix() *net.IPNet

func (CiliumIPv6) HostIP

func (ip CiliumIPv6) HostIP() net.IP

HostIP returns the host address from the node ID.

func (CiliumIPv6) IP

func (ip CiliumIPv6) IP() net.IP

func (CiliumIPv6) IPAMReq

func (ip CiliumIPv6) IPAMReq() ipam.IPAMReq

func (CiliumIPv6) IPNet

func (ip CiliumIPv6) IPNet(ones int) *net.IPNet

func (CiliumIPv6) IsIPv6

func (ip CiliumIPv6) IsIPv6() bool

func (CiliumIPv6) MarshalJSON

func (ip CiliumIPv6) MarshalJSON() ([]byte, error)

func (CiliumIPv6) NodeID

func (ip CiliumIPv6) NodeID() uint32

NodeID returns the node ID portion of the address or 0.

func (CiliumIPv6) NodeIP

func (ip CiliumIPv6) NodeIP() net.IP

NodeIP returns the node's IP based on an endpoint IP of the local node.

func (CiliumIPv6) SetState

func (ip CiliumIPv6) SetState(state uint16)

func (CiliumIPv6) State

func (ip CiliumIPv6) State() uint16

func (CiliumIPv6) String

func (ip CiliumIPv6) String() string

func (*CiliumIPv6) UnmarshalJSON

func (ip *CiliumIPv6) UnmarshalJSON(b []byte) error

func (CiliumIPv6) ValidContainerIP

func (ip CiliumIPv6) ValidContainerIP() bool

ValidContainerIP returns true if IP is a valid IP for a container. To be valid must obey to the following rules: - Node ID, bits from 64 to 96, must be different than 0 - State, bits from 96 to 112, must be 0 - Endpoint ID, bits from 112 to 128, must be different than 0

func (*CiliumIPv6) ValidNodeIP

func (ip *CiliumIPv6) ValidNodeIP() bool

ValidNodeIP returns true if IP is a valid IP of a node. - Node ID, bits from 64 to 96, must be different than 0 - State, bits from 96 to 112, must be 0 - Endpoint ID, bits from 112 to 128, must be 0

type NodeAddress

type NodeAddress struct {
	IPv6Address CiliumIPv6
	IPv6Route   net.IPNet

	IPv4Address CiliumIPv4
	IPv4Route   net.IPNet
}

func NewNodeAddress

func NewNodeAddress(v6Address string, ipv4Range string, device string) (*NodeAddress, error)

NewNodeAddress allocate a new node address.

func (*NodeAddress) IPv4AllocRange

func (a *NodeAddress) IPv4AllocRange() *net.IPNet

func (*NodeAddress) IPv4ClusterRange

func (a *NodeAddress) IPv4ClusterRange() *net.IPNet

func (*NodeAddress) IPv6AllocRange

func (a *NodeAddress) IPv6AllocRange() *net.IPNet

func (*NodeAddress) String

func (a *NodeAddress) String() string

Jump to

Keyboard shortcuts

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