109 lines
2.9 KiB
Go
109 lines
2.9 KiB
Go
package network
|
|
|
|
// Address represents an IP address
|
|
type Address struct {
|
|
Addr string
|
|
PrefixLen int
|
|
}
|
|
|
|
// IPAM represents IP Address Management
|
|
type IPAM struct {
|
|
Driver string
|
|
Options map[string]string //Per network IPAM driver options
|
|
Config []IPAMConfig
|
|
}
|
|
|
|
// IPAMConfig represents IPAM configurations
|
|
type IPAMConfig struct {
|
|
Subnet string `json:",omitempty"`
|
|
IPRange string `json:",omitempty"`
|
|
Gateway string `json:",omitempty"`
|
|
AuxAddress map[string]string `json:"AuxiliaryAddresses,omitempty"`
|
|
}
|
|
|
|
// EndpointIPAMConfig represents IPAM configurations for the endpoint
|
|
type EndpointIPAMConfig struct {
|
|
IPv4Address string `json:",omitempty"`
|
|
IPv6Address string `json:",omitempty"`
|
|
LinkLocalIPs []string `json:",omitempty"`
|
|
}
|
|
|
|
// Copy makes a copy of the endpoint ipam config
|
|
func (cfg *EndpointIPAMConfig) Copy() *EndpointIPAMConfig {
|
|
cfgCopy := *cfg
|
|
cfgCopy.LinkLocalIPs = make([]string, 0, len(cfg.LinkLocalIPs))
|
|
cfgCopy.LinkLocalIPs = append(cfgCopy.LinkLocalIPs, cfg.LinkLocalIPs...)
|
|
return &cfgCopy
|
|
}
|
|
|
|
// PeerInfo represents one peer of an overlay network
|
|
type PeerInfo struct {
|
|
Name string
|
|
IP string
|
|
}
|
|
|
|
// EndpointSettings stores the network endpoint details
|
|
type EndpointSettings struct {
|
|
// Configurations
|
|
IPAMConfig *EndpointIPAMConfig
|
|
Links []string
|
|
Aliases []string
|
|
// Operational data
|
|
NetworkID string
|
|
EndpointID string
|
|
Gateway string
|
|
IPAddress string
|
|
IPPrefixLen int
|
|
IPv6Gateway string
|
|
GlobalIPv6Address string
|
|
GlobalIPv6PrefixLen int
|
|
MacAddress string
|
|
DriverOpts map[string]string
|
|
}
|
|
|
|
// Task carries the information about one backend task
|
|
type Task struct {
|
|
Name string
|
|
EndpointID string
|
|
EndpointIP string
|
|
Info map[string]string
|
|
}
|
|
|
|
// ServiceInfo represents service parameters with the list of service's tasks
|
|
type ServiceInfo struct {
|
|
VIP string
|
|
Ports []string
|
|
LocalLBIndex int
|
|
Tasks []Task
|
|
}
|
|
|
|
// Copy makes a deep copy of `EndpointSettings`
|
|
func (es *EndpointSettings) Copy() *EndpointSettings {
|
|
epCopy := *es
|
|
if es.IPAMConfig != nil {
|
|
epCopy.IPAMConfig = es.IPAMConfig.Copy()
|
|
}
|
|
|
|
if es.Links != nil {
|
|
links := make([]string, 0, len(es.Links))
|
|
epCopy.Links = append(links, es.Links...)
|
|
}
|
|
|
|
if es.Aliases != nil {
|
|
aliases := make([]string, 0, len(es.Aliases))
|
|
epCopy.Aliases = append(aliases, es.Aliases...)
|
|
}
|
|
return &epCopy
|
|
}
|
|
|
|
// NetworkingConfig represents the container's networking configuration for each of its interfaces
|
|
// Carries the networking configs specified in the `docker run` and `docker network connect` commands
|
|
type NetworkingConfig struct {
|
|
EndpointsConfig map[string]*EndpointSettings // Endpoint configs for each connecting network
|
|
}
|
|
|
|
// ConfigReference specifies the source which provides a network's configuration
|
|
type ConfigReference struct {
|
|
Network string
|
|
}
|