mirror of
https://github.com/moby/moby.git
synced 2026-08-09 01:21:37 +00:00
It's a generic error, doesn't implement an errdefs type, is poorly formatted,
and not used as sentinel error anywhere. Let's remove it, and update the error
produced to be slightly more informative (include the invalid type). Worth
noting that there's no need to include the name of the driver in the error,
because the only uses of the error (in `registerNetworkDrivers`) already
decorates it; 5fd7ed2937/libnetwork/drivers_linux.go (L34-L36)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
184 lines
5.8 KiB
Go
184 lines
5.8 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() {}
|
|
|
|
// 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())
|
|
}
|