Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type IPAMConfig ¶
type IPAMConfig struct {
*Range
Name string
Type string `json:"type"`
Routes []*types.Route `json:"routes"`
DataDir string `json:"dataDir"`
ResolvConf string `json:"resolvConf"`
Ranges []RangeSet `json:"ranges"`
IPArgs []net.IP `json:"-"` // Requested IPs from CNI_ARGS and args
}
IPAMConfig represents the IP related network configuration. This nests Range because we initially only supported a single range directly, and wish to preserve backwards compatability
func LoadIPAMConfig ¶
func LoadIPAMConfig(bytes []byte, envArgs string) (*IPAMConfig, string, error)
NewIPAMConfig creates a NetworkConfig from the given network name.
type IPAMEnvArgs ¶
type IPAMEnvArgs struct {
types.CommonArgs
IP net.IP `json:"ip,omitempty"`
}
type IPAllocator ¶
type IPAllocator struct {
// contains filtered or unexported fields
}
func NewIPAllocator ¶
func NewIPAllocator(s *RangeSet, store backend.Store, id int) *IPAllocator
func (*IPAllocator) GetIter ¶
func (a *IPAllocator) GetIter() (*RangeIter, error)
GetIter encapsulates the strategy for this allocator. We use a round-robin strategy, attempting to evenly use the whole set. More specifically, a crash-looping container will not see the same IP until the entire range has been run through. We may wish to consider avoiding recently-released IPs in the future.
func (*IPAllocator) Release ¶
func (a *IPAllocator) Release(id string) error
Release clears all IPs allocated for the container with given ID
type Net ¶
type Net struct {
Name string `json:"name"`
CNIVersion string `json:"cniVersion"`
IPAM *IPAMConfig `json:"ipam"`
RuntimeConfig struct {
IPRanges []RangeSet `json:"ipRanges,omitempty"`
} `json:"runtimeConfig,omitempty"`
Args *struct {
A *IPAMArgs `json:"cni"`
} `json:"args"`
}
The top-level network config - IPAM plugins are passed the full configuration of the calling plugin, not just the IPAM section.
type Range ¶
type Range struct {
RangeStart net.IP `json:"rangeStart,omitempty"` // The first ip, inclusive
RangeEnd net.IP `json:"rangeEnd,omitempty"` // The last ip, inclusive
Subnet types.IPNet `json:"subnet"`
Gateway net.IP `json:"gateway,omitempty"`
}
func (*Range) Canonicalize ¶
Canonicalize takes a given range and ensures that all information is consistent, filling out Start, End, and Gateway with sane values if missing
func (*Range) Contains ¶
IsValidIP checks if a given ip is a valid, allocatable address in a given Range
type RangeSet ¶
type RangeSet []Range
func (*RangeSet) Canonicalize ¶
Canonicalize ensures the RangeSet is in a standard form, and detects any invalid input. Call Range.Canonicalize() on every Range in the set