Documentation
¶
Index ¶
- Constants
- Variables
- func RegisterNetworkProtocol(name string, p INetworkProtocol)
- func RegisterTransportProtocol(name string, p ITransportProtocol)
- type IEndpoint
- type ILinkEndpoint
- type INetworkDispatcher
- type INetworkEndpoint
- type INetworkProtocol
- type IStack
- type ITransportDispatcher
- type ITransportProtocol
- type NIC
- type NetworkEndpointID
- type Route
- type Stack
- func (s *Stack) AddAddress(id tcpip.NICID, protocol tcpip.NetworkProtocolNumber, addr tcpip.Address) error
- func (s *Stack) CreateNIC(id tcpip.NICID, linkEP tcpip.LinkEndpointID) error
- func (s *Stack) FindRoute(id tcpip.NICID, localAddr, remoteAddr tcpip.Address, ...) (Route, error)
- func (s *Stack) NewEndpoint(transport tcpip.TransportProtocolNumber, network tcpip.NetworkProtocolNumber) (IEndpoint, error)
- func (s *Stack) SetRouteTable(table []tcpip.Route)
- type TransportEndpointID
Constants ¶
View Source
const UDPProtocolNumber tcpip.TransportProtocolNumber = 17
Variables ¶
View Source
var ErrUnknownProtocol = errors.New("unknown protocol")
Functions ¶
func RegisterNetworkProtocol ¶
func RegisterNetworkProtocol(name string, p INetworkProtocol)
func RegisterTransportProtocol ¶
func RegisterTransportProtocol(name string, p ITransportProtocol)
Types ¶
type IEndpoint ¶
type IEndpoint interface {
Close()
Bind(address tcpip.FullAddress) error
RecvMsg(*tcpip.FullAddress) (buffer.View, error)
Write(buffer.View, *tcpip.FullAddress) (uintptr, error)
}
type ILinkEndpoint ¶
type ILinkEndpoint interface {
Attach(dispatcher INetworkDispatcher)
}
func FindLinkEndpoint ¶
func FindLinkEndpoint(id tcpip.LinkEndpointID) ILinkEndpoint
type INetworkDispatcher ¶
type INetworkDispatcher interface{}
type INetworkEndpoint ¶
type INetworkProtocol ¶
type INetworkProtocol interface {
NewEndpoint(nicid tcpip.NICID, addr tcpip.Address, dispatcher ITransportDispatcher, sender ILinkEndpoint) (INetworkEndpoint, error)
Number() tcpip.NetworkProtocolNumber
}
type IStack ¶
type IStack interface {
NewEndpoint(transport tcpip.TransportProtocolNumber, network tcpip.NetworkProtocolNumber) (IEndpoint, error)
}
type ITransportDispatcher ¶
type ITransportDispatcher interface{}
type ITransportProtocol ¶
type ITransportProtocol interface {
NewEndpoint(netProto tcpip.NetworkProtocolNumber) (IEndpoint, error)
Number() tcpip.TransportProtocolNumber
}
type NetworkEndpointID ¶
type Route ¶
type Route struct {
RemoteAddress tcpip.Address
LocalAddress tcpip.Address
NextHop tcpip.Address
NetProto tcpip.NetworkProtocolNumber
// contains filtered or unexported fields
}
func (*Route) MaxHeaderLength ¶
func (*Route) PseudoHeaderChecksum ¶
func (r *Route) PseudoHeaderChecksum(protocol tcpip.TransportProtocolNumber) uint16
func (*Route) WritePacket ¶
func (r *Route) WritePacket(hdr *buffer.Prependable, payload buffer.View, protocol tcpip.TransportProtocolNumber) error
type Stack ¶
type Stack struct {
// contains filtered or unexported fields
}
func (*Stack) AddAddress ¶
func (*Stack) FindRoute ¶
func (s *Stack) FindRoute(id tcpip.NICID, localAddr, remoteAddr tcpip.Address, netProto tcpip.NetworkProtocolNumber) (Route, error)
Transport endpoint uses this to find the route, then uses the route to write
func (*Stack) NewEndpoint ¶
func (s *Stack) NewEndpoint(transport tcpip.TransportProtocolNumber, network tcpip.NetworkProtocolNumber) (IEndpoint, error)
new TransportEndpoint
func (*Stack) SetRouteTable ¶
later transportendpoint will need to find route and send package with the route's networkendpoint
Click to show internal directories.
Click to hide internal directories.