Documentation ¶
Overview ¶
Package channel provides the implemention of channel-based data-link layer endpoints. Such endpoints allow injection of inbound packets and store outbound packets in a channel.
Index ¶
- type Endpoint
- func (e *Endpoint) Attach(dispatcher stack.NetworkDispatcher)
- func (e *Endpoint) Capabilities() stack.LinkEndpointCapabilities
- func (e *Endpoint) Drain() int
- func (*Endpoint) GSOMaxSize() uint32
- func (e *Endpoint) InjectInbound(protocol tcpip.NetworkProtocolNumber, pkt tcpip.PacketBuffer)
- func (e *Endpoint) InjectLinkAddr(protocol tcpip.NetworkProtocolNumber, remote tcpip.LinkAddress, ...)
- func (e *Endpoint) IsAttached() bool
- func (e *Endpoint) LinkAddress() tcpip.LinkAddress
- func (e *Endpoint) MTU() uint32
- func (*Endpoint) MaxHeaderLength() uint16
- func (*Endpoint) Wait()
- func (e *Endpoint) WritePacket(_ *stack.Route, gso *stack.GSO, protocol tcpip.NetworkProtocolNumber, ...) *tcpip.Error
- func (e *Endpoint) WritePackets(_ *stack.Route, gso *stack.GSO, hdrs []stack.PacketDescriptor, ...) (int, *tcpip.Error)
- func (e *Endpoint) WriteRawPacket(vv buffer.VectorisedView) *tcpip.Error
- type PacketInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Endpoint ¶
type Endpoint struct { GSO bool // C is where outbound packets are queued. C chan PacketInfo // contains filtered or unexported fields }
Endpoint is link layer endpoint that stores outbound packets in a channel and allows injection of inbound packets.
func New ¶
func New(size int, mtu uint32, linkAddr tcpip.LinkAddress) *Endpoint
New creates a new channel endpoint.
func (*Endpoint) Attach ¶
func (e *Endpoint) Attach(dispatcher stack.NetworkDispatcher)
Attach saves the stack network-layer dispatcher for use later when packets are injected.
func (*Endpoint) Capabilities ¶
func (e *Endpoint) Capabilities() stack.LinkEndpointCapabilities
Capabilities implements stack.LinkEndpoint.Capabilities.
func (*Endpoint) GSOMaxSize ¶
GSOMaxSize returns the maximum GSO packet size.
func (*Endpoint) InjectInbound ¶
func (e *Endpoint) InjectInbound(protocol tcpip.NetworkProtocolNumber, pkt tcpip.PacketBuffer)
InjectInbound injects an inbound packet.
func (*Endpoint) InjectLinkAddr ¶
func (e *Endpoint) InjectLinkAddr(protocol tcpip.NetworkProtocolNumber, remote tcpip.LinkAddress, pkt tcpip.PacketBuffer)
InjectLinkAddr injects an inbound packet with a remote link address.
func (*Endpoint) IsAttached ¶
IsAttached implements stack.LinkEndpoint.IsAttached.
func (*Endpoint) LinkAddress ¶
func (e *Endpoint) LinkAddress() tcpip.LinkAddress
LinkAddress returns the link address of this endpoint.
func (*Endpoint) MTU ¶
MTU implements stack.LinkEndpoint.MTU. It returns the value initialized during construction.
func (*Endpoint) MaxHeaderLength ¶
MaxHeaderLength returns the maximum size of the link layer header. Given it doesn't have a header, it just returns 0.
func (*Endpoint) WritePacket ¶
func (e *Endpoint) WritePacket(_ *stack.Route, gso *stack.GSO, protocol tcpip.NetworkProtocolNumber, pkt tcpip.PacketBuffer) *tcpip.Error
WritePacket stores outbound packets into the channel.
func (*Endpoint) WritePackets ¶
func (e *Endpoint) WritePackets(_ *stack.Route, gso *stack.GSO, hdrs []stack.PacketDescriptor, payload buffer.VectorisedView, protocol tcpip.NetworkProtocolNumber) (int, *tcpip.Error)
WritePackets stores outbound packets into the channel.
func (*Endpoint) WriteRawPacket ¶
func (e *Endpoint) WriteRawPacket(vv buffer.VectorisedView) *tcpip.Error
WriteRawPacket implements stack.LinkEndpoint.WriteRawPacket.
type PacketInfo ¶
type PacketInfo struct { Pkt tcpip.PacketBuffer Proto tcpip.NetworkProtocolNumber GSO *stack.GSO }
PacketInfo holds all the information about an outbound packet.