Documentation ¶
Overview ¶
Package utils holds common testing utilities for tcpip.
Index ¶
- Constants
- Variables
- func RxICMPv4EchoReply(e *channel.Endpoint, src, dst tcpip.Address, ttl uint8)
- func RxICMPv4EchoRequest(e *channel.Endpoint, src, dst tcpip.Address, ttl uint8)
- func RxICMPv6EchoReply(e *channel.Endpoint, src, dst tcpip.Address, ttl uint8)
- func RxICMPv6EchoRequest(e *channel.Endpoint, src, dst tcpip.Address, ttl uint8)
- func SetupRoutedStacks(t *testing.T, host1Stack, routerStack, host2Stack *stack.Stack)
- func SetupRouterStack(t *testing.T, s *stack.Stack, ep1, ep2 stack.LinkEndpoint)
- type EndpointWithDestinationCheck
Constants ¶
const ( Host1NICID = 1 RouterNICID1 = 2 RouterNICID2 = 3 Host2NICID = 4 )
Common NIC IDs used by tests.
const ( Host1NICName = "host1NIC" RouterNIC1Name = "routerNIC1" RouterNIC2Name = "routerNIC2" Host2NICName = "host2NIC" )
Common NIC names used by tests.
const ( LinkAddr1 = tcpip.LinkAddress("\x02\x03\x03\x04\x05\x06") LinkAddr2 = tcpip.LinkAddress("\x02\x03\x03\x04\x05\x07") LinkAddr3 = tcpip.LinkAddress("\x02\x03\x03\x04\x05\x08") LinkAddr4 = tcpip.LinkAddress("\x02\x03\x03\x04\x05\x09") )
Common link addresses used by tests.
const ( RemotePort = 5555 LocalPort = 80 )
Common ports for testing.
Variables ¶
var ( Ipv4Addr = tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("192.168.1.58").To4()), PrefixLen: 24, } Ipv4Subnet = Ipv4Addr.Subnet() Ipv4SubnetBcast = Ipv4Subnet.Broadcast() Ipv6Addr = tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("200a::1").To16()), PrefixLen: 64, } Ipv6Subnet = Ipv6Addr.Subnet() Ipv6SubnetBcast = Ipv6Subnet.Broadcast() Ipv4Addr1 = tcpip.ProtocolAddress{ Protocol: ipv4.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("192.168.0.1").To4()), PrefixLen: 24, }, } Ipv4Addr2 = tcpip.ProtocolAddress{ Protocol: ipv4.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("192.168.0.2").To4()), PrefixLen: 8, }, } Ipv4Addr3 = tcpip.ProtocolAddress{ Protocol: ipv4.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("192.168.0.3").To4()), PrefixLen: 8, }, } Ipv6Addr1 = tcpip.ProtocolAddress{ Protocol: ipv6.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("a::1").To16()), PrefixLen: 64, }, } Ipv6Addr2 = tcpip.ProtocolAddress{ Protocol: ipv6.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("a::2").To16()), PrefixLen: 64, }, } Ipv6Addr3 = tcpip.ProtocolAddress{ Protocol: ipv6.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("a::3").To16()), PrefixLen: 64, }, } // Remote addrs. RemoteIPv4Addr = tcpip.Address(net.ParseIP("10.0.0.1").To4()) RemoteIPv6Addr = tcpip.Address(net.ParseIP("200b::1").To16()) )
Common IP addresses used by tests.
var ( Host1IPv4Addr = tcpip.ProtocolAddress{ Protocol: ipv4.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("192.168.0.2").To4()), PrefixLen: 24, }, } RouterNIC1IPv4Addr = tcpip.ProtocolAddress{ Protocol: ipv4.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("192.168.0.1").To4()), PrefixLen: 24, }, } RouterNIC2IPv4Addr = tcpip.ProtocolAddress{ Protocol: ipv4.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("10.0.0.1").To4()), PrefixLen: 8, }, } Host2IPv4Addr = tcpip.ProtocolAddress{ Protocol: ipv4.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("10.0.0.2").To4()), PrefixLen: 8, }, } Host1IPv6Addr = tcpip.ProtocolAddress{ Protocol: ipv6.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("a::2").To16()), PrefixLen: 64, }, } RouterNIC1IPv6Addr = tcpip.ProtocolAddress{ Protocol: ipv6.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("a::1").To16()), PrefixLen: 64, }, } RouterNIC2IPv6Addr = tcpip.ProtocolAddress{ Protocol: ipv6.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("b::1").To16()), PrefixLen: 64, }, } Host2IPv6Addr = tcpip.ProtocolAddress{ Protocol: ipv6.ProtocolNumber, AddressWithPrefix: tcpip.AddressWithPrefix{ Address: tcpip.Address(net.ParseIP("b::2").To16()), PrefixLen: 64, }, } )
Common IP addresses used for testing.
Functions ¶
func RxICMPv4EchoReply ¶
RxICMPv4EchoReply constructs and injects an ICMPv4 echo reply packet on the provided endpoint.
func RxICMPv4EchoRequest ¶
RxICMPv4EchoRequest constructs and injects an ICMPv4 echo request packet on the provided endpoint.
func RxICMPv6EchoReply ¶
RxICMPv6EchoReply constructs and injects an ICMPv6 echo reply packet on the provided endpoint.
func RxICMPv6EchoRequest ¶
RxICMPv6EchoRequest constructs and injects an ICMPv6 echo request packet on the provided endpoint.
func SetupRoutedStacks ¶
SetupRoutedStacks creates the NICs, sets forwarding, adds addresses and sets the route tables for the passed stacks.
func SetupRouterStack ¶
SetupRouterStack creates the NICs, sets forwarding, adds addresses and sets the route table for a stack that should operate as a router.
Types ¶
type EndpointWithDestinationCheck ¶
EndpointWithDestinationCheck is a link endpoint that checks the destination link address before delivering network packets to the network dispatcher.
func NewEthernetEndpoint ¶
func NewEthernetEndpoint(ep stack.LinkEndpoint) *EndpointWithDestinationCheck
NewEthernetEndpoint returns an ethernet link endpoint that wraps an inner link endpoint and checks the destination link address before delivering network packets to the network dispatcher.
See ethernet.Endpoint for more details.
func (*EndpointWithDestinationCheck) DeliverNetworkPacket ¶
func (e *EndpointWithDestinationCheck) DeliverNetworkPacket(src, dst tcpip.LinkAddress, proto tcpip.NetworkProtocolNumber, pkt *stack.PacketBuffer)
DeliverNetworkPacket implements stack.NetworkDispatcher.