mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
It is an idea of running codespell as part of our presubmit checks. Before enabling it for new changes, let's fix what it has found. Signed-off-by: Andrei Vagin <avagin@gmail.com>
130 lines
4.3 KiB
Go
130 lines
4.3 KiB
Go
// Copyright 2021 The gVisor Authors.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package ip
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"gvisor.dev/gvisor/pkg/tcpip"
|
|
)
|
|
|
|
// ForwardingError represents an error that occurred while trying to forward
|
|
// a packet.
|
|
type ForwardingError interface {
|
|
isForwardingError()
|
|
fmt.Stringer
|
|
}
|
|
|
|
// ErrTTLExceeded indicates that the received packet's TTL has been exceeded.
|
|
type ErrTTLExceeded struct{}
|
|
|
|
func (*ErrTTLExceeded) isForwardingError() {}
|
|
|
|
func (*ErrTTLExceeded) String() string { return "ttl exceeded" }
|
|
|
|
// ErrOutgoingDeviceNoBufferSpace indicates that the outgoing device does not
|
|
// have enough space to hold a buffer.
|
|
type ErrOutgoingDeviceNoBufferSpace struct{}
|
|
|
|
func (*ErrOutgoingDeviceNoBufferSpace) isForwardingError() {}
|
|
|
|
func (*ErrOutgoingDeviceNoBufferSpace) String() string { return "no device buffer space" }
|
|
|
|
// ErrParameterProblem indicates the received packet had a problem with an IP
|
|
// parameter.
|
|
type ErrParameterProblem struct{}
|
|
|
|
func (*ErrParameterProblem) isForwardingError() {}
|
|
|
|
func (*ErrParameterProblem) String() string { return "parameter problem" }
|
|
|
|
// ErrInitializingSourceAddress indicates the received packet had a source
|
|
// address that may only be used on the local network as part of initialization
|
|
// work.
|
|
type ErrInitializingSourceAddress struct{}
|
|
|
|
func (*ErrInitializingSourceAddress) isForwardingError() {}
|
|
|
|
func (*ErrInitializingSourceAddress) String() string { return "initializing source address" }
|
|
|
|
// ErrLinkLocalSourceAddress indicates the received packet had a link-local
|
|
// source address.
|
|
type ErrLinkLocalSourceAddress struct{}
|
|
|
|
func (*ErrLinkLocalSourceAddress) isForwardingError() {}
|
|
|
|
func (*ErrLinkLocalSourceAddress) String() string { return "link local source address" }
|
|
|
|
// ErrLinkLocalDestinationAddress indicates the received packet had a link-local
|
|
// destination address.
|
|
type ErrLinkLocalDestinationAddress struct{}
|
|
|
|
func (*ErrLinkLocalDestinationAddress) isForwardingError() {}
|
|
|
|
func (*ErrLinkLocalDestinationAddress) String() string { return "link local destination address" }
|
|
|
|
// ErrHostUnreachable indicates that the destination host could not be reached.
|
|
type ErrHostUnreachable struct{}
|
|
|
|
func (*ErrHostUnreachable) isForwardingError() {}
|
|
|
|
func (*ErrHostUnreachable) String() string { return "no route to host" }
|
|
|
|
// ErrMessageTooLong indicates the packet was too big for the outgoing MTU.
|
|
//
|
|
// +stateify savable
|
|
type ErrMessageTooLong struct{}
|
|
|
|
func (*ErrMessageTooLong) isForwardingError() {}
|
|
|
|
func (*ErrMessageTooLong) String() string { return "message too long" }
|
|
|
|
// ErrNoMulticastPendingQueueBufferSpace indicates that a multicast packet
|
|
// could not be added to the pending packet queue due to insufficient buffer
|
|
// space.
|
|
//
|
|
// +stateify savable
|
|
type ErrNoMulticastPendingQueueBufferSpace struct{}
|
|
|
|
func (*ErrNoMulticastPendingQueueBufferSpace) isForwardingError() {}
|
|
|
|
func (*ErrNoMulticastPendingQueueBufferSpace) String() string { return "no buffer space" }
|
|
|
|
// ErrUnexpectedMulticastInputInterface indicates that the interface that the
|
|
// packet arrived on did not match the routes expected input interface.
|
|
type ErrUnexpectedMulticastInputInterface struct{}
|
|
|
|
func (*ErrUnexpectedMulticastInputInterface) isForwardingError() {}
|
|
|
|
func (*ErrUnexpectedMulticastInputInterface) String() string { return "unexpected input interface" }
|
|
|
|
// ErrUnknownOutputEndpoint indicates that the output endpoint associated with
|
|
// a route could not be found.
|
|
type ErrUnknownOutputEndpoint struct{}
|
|
|
|
func (*ErrUnknownOutputEndpoint) isForwardingError() {}
|
|
|
|
func (*ErrUnknownOutputEndpoint) String() string { return "unknown endpoint" }
|
|
|
|
// ErrOther indicates the packet coould not be forwarded for a reason
|
|
// captured by the contained error.
|
|
type ErrOther struct {
|
|
Err tcpip.Error
|
|
}
|
|
|
|
func (*ErrOther) isForwardingError() {}
|
|
|
|
func (e *ErrOther) String() string { return fmt.Sprintf("other tcpip error: %s", e.Err) }
|