Documentation ¶
Overview ¶
Package raw provides the implementation of raw sockets (see raw(7)). Raw sockets allow applications to:
- manually write and inspect transport layer headers and payloads
- receive all traffic of a given transport protocol (e.g. ICMP or UDP)
- optionally write and inspect network layer headers of packets
Raw sockets don't have any notion of ports, and incoming packets are demultiplexed solely by protocol number. Thus, a raw UDP endpoint will receive every UDP packet received by netstack. bind(2) and connect(2) can be used to filter incoming packets by source and destination.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewEndpoint ¶
func NewEndpoint(stack *stack.Stack, netProto tcpip.NetworkProtocolNumber, transProto tcpip.TransportProtocolNumber, waiterQueue *waiter.Queue) (tcpip.Endpoint, tcpip.Error)
NewEndpoint returns a raw endpoint for the given protocols.
Types ¶
type CreateOnlyFactory ¶
type CreateOnlyFactory struct{}
CreateOnlyFactory implements stack.RawFactory. It allows creation of raw endpoints that do not support reading, writing, binding, etc.
+stateify savable
func (CreateOnlyFactory) NewPacketEndpoint ¶
func (CreateOnlyFactory) NewPacketEndpoint(*stack.Stack, bool, tcpip.NetworkProtocolNumber, *waiter.Queue) (tcpip.Endpoint, tcpip.Error)
NewPacketEndpoint implements stack.RawFactory.NewPacketEndpoint.
func (CreateOnlyFactory) NewUnassociatedEndpoint ¶
func (CreateOnlyFactory) NewUnassociatedEndpoint(stk *stack.Stack, _ tcpip.NetworkProtocolNumber, _ tcpip.TransportProtocolNumber, _ *waiter.Queue) (tcpip.Endpoint, tcpip.Error)
NewUnassociatedEndpoint implements stack.RawFactory.NewUnassociatedEndpoint.
type EndpointFactory ¶
type EndpointFactory struct{}
EndpointFactory implements stack.RawFactory.
+stateify savable
func (EndpointFactory) NewPacketEndpoint ¶
func (EndpointFactory) NewPacketEndpoint(stack *stack.Stack, cooked bool, netProto tcpip.NetworkProtocolNumber, waiterQueue *waiter.Queue) (tcpip.Endpoint, tcpip.Error)
NewPacketEndpoint implements stack.RawFactory.NewPacketEndpoint.
func (EndpointFactory) NewUnassociatedEndpoint ¶
func (EndpointFactory) NewUnassociatedEndpoint(stack *stack.Stack, netProto tcpip.NetworkProtocolNumber, transProto tcpip.TransportProtocolNumber, waiterQueue *waiter.Queue) (tcpip.Endpoint, tcpip.Error)
NewUnassociatedEndpoint implements stack.RawFactory.NewUnassociatedEndpoint.