mirror of
https://github.com/moby/moby.git
synced 2026-07-11 18:13:57 +00:00
191 lines
6.1 KiB
Go
191 lines
6.1 KiB
Go
//go:build linux
|
|
|
|
package bridge
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
)
|
|
|
|
// ErrConfigExists error is returned when driver already has a config applied.
|
|
type ErrConfigExists struct{}
|
|
|
|
func (ece *ErrConfigExists) Error() string {
|
|
return "configuration already exists, bridge configuration can be applied only once"
|
|
}
|
|
|
|
// Forbidden denotes the type of this error
|
|
func (ece *ErrConfigExists) Forbidden() {}
|
|
|
|
// ErrInvalidDriverConfig error is returned when Bridge Driver is passed an invalid config
|
|
type ErrInvalidDriverConfig struct{}
|
|
|
|
func (eidc *ErrInvalidDriverConfig) Error() string {
|
|
return "Invalid configuration passed to Bridge Driver"
|
|
}
|
|
|
|
// ErrInvalidNetworkConfig error is returned when a network is created on a driver without valid config.
|
|
type ErrInvalidNetworkConfig struct{}
|
|
|
|
func (einc *ErrInvalidNetworkConfig) Error() string {
|
|
return "trying to create a network on a driver without valid config"
|
|
}
|
|
|
|
// Forbidden denotes the type of this error
|
|
func (einc *ErrInvalidNetworkConfig) Forbidden() {}
|
|
|
|
// ErrInvalidEndpointConfig error is returned when an endpoint create is attempted with an invalid endpoint configuration.
|
|
type ErrInvalidEndpointConfig struct{}
|
|
|
|
func (eiec *ErrInvalidEndpointConfig) Error() string {
|
|
return "trying to create an endpoint with an invalid endpoint configuration"
|
|
}
|
|
|
|
// InvalidParameter denotes the type of this error
|
|
func (eiec *ErrInvalidEndpointConfig) InvalidParameter() {}
|
|
|
|
// ErrNetworkExists error is returned when a network already exists and another network is created.
|
|
type ErrNetworkExists struct{}
|
|
|
|
func (ene *ErrNetworkExists) Error() string {
|
|
return "network already exists, bridge can only have one network"
|
|
}
|
|
|
|
// Forbidden denotes the type of this error
|
|
func (ene *ErrNetworkExists) Forbidden() {}
|
|
|
|
// ErrIfaceName error is returned when a new name could not be generated.
|
|
type ErrIfaceName struct{}
|
|
|
|
func (ein *ErrIfaceName) Error() string {
|
|
return "failed to find name for new interface"
|
|
}
|
|
|
|
// InternalError denotes the type of this error
|
|
func (ein *ErrIfaceName) InternalError() {}
|
|
|
|
// ErrNoIPAddr error is returned when bridge has no IPv4 address configured.
|
|
type ErrNoIPAddr struct{}
|
|
|
|
func (enip *ErrNoIPAddr) Error() string {
|
|
return "bridge has no IPv4 address configured"
|
|
}
|
|
|
|
// InternalError denotes the type of this error
|
|
func (enip *ErrNoIPAddr) InternalError() {}
|
|
|
|
// ErrInvalidGateway is returned when the user provided default gateway (v4/v6) is not valid.
|
|
type ErrInvalidGateway struct{}
|
|
|
|
func (eig *ErrInvalidGateway) Error() string {
|
|
return "default gateway ip must be part of the network"
|
|
}
|
|
|
|
// InvalidParameter denotes the type of this error
|
|
func (eig *ErrInvalidGateway) InvalidParameter() {}
|
|
|
|
// ErrInvalidMtu is returned when the user provided MTU is not valid.
|
|
type ErrInvalidMtu int
|
|
|
|
func (eim ErrInvalidMtu) Error() string {
|
|
return fmt.Sprintf("invalid MTU number: %d", int(eim))
|
|
}
|
|
|
|
// InvalidParameter denotes the type of this error
|
|
func (eim ErrInvalidMtu) InvalidParameter() {}
|
|
|
|
// ErrUnsupportedAddressType is returned when the specified address type is not supported.
|
|
type ErrUnsupportedAddressType string
|
|
|
|
func (uat ErrUnsupportedAddressType) Error() string {
|
|
return fmt.Sprintf("unsupported address type: %s", string(uat))
|
|
}
|
|
|
|
// InvalidParameter denotes the type of this error
|
|
func (uat ErrUnsupportedAddressType) InvalidParameter() {}
|
|
|
|
// InvalidNetworkIDError is returned when the passed
|
|
// network id for an existing network is not a known id.
|
|
type InvalidNetworkIDError string
|
|
|
|
func (inie InvalidNetworkIDError) Error() string {
|
|
return fmt.Sprintf("invalid network id %s", string(inie))
|
|
}
|
|
|
|
// NotFound denotes the type of this error
|
|
func (inie InvalidNetworkIDError) NotFound() {}
|
|
|
|
// InvalidEndpointIDError is returned when the passed
|
|
// endpoint id is not valid.
|
|
type InvalidEndpointIDError string
|
|
|
|
func (ieie InvalidEndpointIDError) Error() string {
|
|
return fmt.Sprintf("invalid endpoint id: %s", string(ieie))
|
|
}
|
|
|
|
// InvalidParameter denotes the type of this error
|
|
func (ieie InvalidEndpointIDError) InvalidParameter() {}
|
|
|
|
// EndpointNotFoundError is returned when the no endpoint
|
|
// with the passed endpoint id is found.
|
|
type EndpointNotFoundError string
|
|
|
|
func (enfe EndpointNotFoundError) Error() string {
|
|
return fmt.Sprintf("endpoint not found: %s", string(enfe))
|
|
}
|
|
|
|
// NotFound denotes the type of this error
|
|
func (enfe EndpointNotFoundError) NotFound() {}
|
|
|
|
// NonDefaultBridgeExistError is returned when a non-default
|
|
// bridge config is passed but it does not already exist.
|
|
type NonDefaultBridgeExistError string
|
|
|
|
func (ndbee NonDefaultBridgeExistError) Error() string {
|
|
return fmt.Sprintf("bridge device with non default name %s must be created manually", string(ndbee))
|
|
}
|
|
|
|
// Forbidden denotes the type of this error
|
|
func (ndbee NonDefaultBridgeExistError) Forbidden() {}
|
|
|
|
// NonDefaultBridgeNeedsIPError is returned when a non-default
|
|
// bridge config is passed but it has no ip configured
|
|
type NonDefaultBridgeNeedsIPError string
|
|
|
|
func (ndbee NonDefaultBridgeNeedsIPError) Error() string {
|
|
return fmt.Sprintf("bridge device with non default name %s must have a valid IP address", string(ndbee))
|
|
}
|
|
|
|
// Forbidden denotes the type of this error
|
|
func (ndbee NonDefaultBridgeNeedsIPError) Forbidden() {}
|
|
|
|
// IPv4AddrAddError is returned when IPv4 address could not be added to the bridge.
|
|
type IPv4AddrAddError struct {
|
|
IP *net.IPNet
|
|
Err error
|
|
}
|
|
|
|
func (ipv4 *IPv4AddrAddError) Error() string {
|
|
return fmt.Sprintf("failed to add IPv4 address %s to bridge: %v", ipv4.IP, ipv4.Err)
|
|
}
|
|
|
|
// InternalError denotes the type of this error
|
|
func (ipv4 *IPv4AddrAddError) InternalError() {}
|
|
|
|
// IPv4AddrNoMatchError is returned when the bridge's IPv4 address does not match configured.
|
|
type IPv4AddrNoMatchError struct {
|
|
IP net.IP
|
|
CfgIP net.IP
|
|
}
|
|
|
|
func (ipv4 *IPv4AddrNoMatchError) Error() string {
|
|
return fmt.Sprintf("bridge IPv4 (%s) does not match requested configuration %s", ipv4.IP, ipv4.CfgIP)
|
|
}
|
|
|
|
// IPv6AddrNoMatchError is returned when the bridge's IPv6 address does not match configured.
|
|
type IPv6AddrNoMatchError net.IPNet
|
|
|
|
func (ipv6 *IPv6AddrNoMatchError) Error() string {
|
|
return fmt.Sprintf("bridge IPv6 addresses do not match the expected bridge configuration %s", (*net.IPNet)(ipv6).String())
|
|
}
|