mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Rename nicid to nicID to follow go-readability initialisms
https://github.com/golang/go/wiki/CodeReviewComments#initialisms This change does not introduce any new functionality. It just renames variables from `nicid` to `nicID`. PiperOrigin-RevId: 278992966
This commit is contained in:
committed by
gVisor bot
parent
adb10f4d53
commit
0c424ea731
@@ -42,7 +42,7 @@ const (
|
||||
|
||||
// endpoint implements stack.NetworkEndpoint.
|
||||
type endpoint struct {
|
||||
nicid tcpip.NICID
|
||||
nicID tcpip.NICID
|
||||
linkEP stack.LinkEndpoint
|
||||
linkAddrCache stack.LinkAddressCache
|
||||
}
|
||||
@@ -58,7 +58,7 @@ func (e *endpoint) MTU() uint32 {
|
||||
}
|
||||
|
||||
func (e *endpoint) NICID() tcpip.NICID {
|
||||
return e.nicid
|
||||
return e.nicID
|
||||
}
|
||||
|
||||
func (e *endpoint) Capabilities() stack.LinkEndpointCapabilities {
|
||||
@@ -102,7 +102,7 @@ func (e *endpoint) HandlePacket(r *stack.Route, pkt tcpip.PacketBuffer) {
|
||||
switch h.Op() {
|
||||
case header.ARPRequest:
|
||||
localAddr := tcpip.Address(h.ProtocolAddressTarget())
|
||||
if e.linkAddrCache.CheckLocalAddress(e.nicid, header.IPv4ProtocolNumber, localAddr) == 0 {
|
||||
if e.linkAddrCache.CheckLocalAddress(e.nicID, header.IPv4ProtocolNumber, localAddr) == 0 {
|
||||
return // we have no useful answer, ignore the request
|
||||
}
|
||||
hdr := buffer.NewPrependable(int(e.linkEP.MaxHeaderLength()) + header.ARPSize)
|
||||
@@ -118,7 +118,7 @@ func (e *endpoint) HandlePacket(r *stack.Route, pkt tcpip.PacketBuffer) {
|
||||
case header.ARPReply:
|
||||
addr := tcpip.Address(h.ProtocolAddressSender())
|
||||
linkAddr := tcpip.LinkAddress(h.HardwareAddressSender())
|
||||
e.linkAddrCache.AddLinkAddress(e.nicid, addr, linkAddr)
|
||||
e.linkAddrCache.AddLinkAddress(e.nicID, addr, linkAddr)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,12 +135,12 @@ func (*protocol) ParseAddresses(v buffer.View) (src, dst tcpip.Address) {
|
||||
return tcpip.Address(h.ProtocolAddressSender()), ProtocolAddress
|
||||
}
|
||||
|
||||
func (p *protocol) NewEndpoint(nicid tcpip.NICID, addrWithPrefix tcpip.AddressWithPrefix, linkAddrCache stack.LinkAddressCache, dispatcher stack.TransportDispatcher, sender stack.LinkEndpoint) (stack.NetworkEndpoint, *tcpip.Error) {
|
||||
func (p *protocol) NewEndpoint(nicID tcpip.NICID, addrWithPrefix tcpip.AddressWithPrefix, linkAddrCache stack.LinkAddressCache, dispatcher stack.TransportDispatcher, sender stack.LinkEndpoint) (stack.NetworkEndpoint, *tcpip.Error) {
|
||||
if addrWithPrefix.Address != ProtocolAddress {
|
||||
return nil, tcpip.ErrBadLocalAddress
|
||||
}
|
||||
return &endpoint{
|
||||
nicid: nicid,
|
||||
nicID: nicID,
|
||||
linkEP: sender,
|
||||
linkAddrCache: linkAddrCache,
|
||||
}, nil
|
||||
|
||||
@@ -47,7 +47,7 @@ const (
|
||||
)
|
||||
|
||||
type endpoint struct {
|
||||
nicid tcpip.NICID
|
||||
nicID tcpip.NICID
|
||||
id stack.NetworkEndpointID
|
||||
prefixLen int
|
||||
linkEP stack.LinkEndpoint
|
||||
@@ -57,9 +57,9 @@ type endpoint struct {
|
||||
}
|
||||
|
||||
// NewEndpoint creates a new ipv4 endpoint.
|
||||
func (p *protocol) NewEndpoint(nicid tcpip.NICID, addrWithPrefix tcpip.AddressWithPrefix, linkAddrCache stack.LinkAddressCache, dispatcher stack.TransportDispatcher, linkEP stack.LinkEndpoint) (stack.NetworkEndpoint, *tcpip.Error) {
|
||||
func (p *protocol) NewEndpoint(nicID tcpip.NICID, addrWithPrefix tcpip.AddressWithPrefix, linkAddrCache stack.LinkAddressCache, dispatcher stack.TransportDispatcher, linkEP stack.LinkEndpoint) (stack.NetworkEndpoint, *tcpip.Error) {
|
||||
e := &endpoint{
|
||||
nicid: nicid,
|
||||
nicID: nicID,
|
||||
id: stack.NetworkEndpointID{LocalAddress: addrWithPrefix.Address},
|
||||
prefixLen: addrWithPrefix.PrefixLen,
|
||||
linkEP: linkEP,
|
||||
@@ -89,7 +89,7 @@ func (e *endpoint) Capabilities() stack.LinkEndpointCapabilities {
|
||||
|
||||
// NICID returns the ID of the NIC this endpoint belongs to.
|
||||
func (e *endpoint) NICID() tcpip.NICID {
|
||||
return e.nicid
|
||||
return e.nicID
|
||||
}
|
||||
|
||||
// ID returns the ipv4 endpoint ID.
|
||||
|
||||
@@ -451,7 +451,7 @@ func TestInvalidFragments(t *testing.T) {
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
const nicid tcpip.NICID = 42
|
||||
const nicID tcpip.NICID = 42
|
||||
s := stack.New(stack.Options{
|
||||
NetworkProtocols: []stack.NetworkProtocol{
|
||||
ipv4.NewProtocol(),
|
||||
@@ -461,7 +461,7 @@ func TestInvalidFragments(t *testing.T) {
|
||||
var linkAddr = tcpip.LinkAddress([]byte{0x30, 0x30, 0x30, 0x30, 0x30, 0x30})
|
||||
var remoteLinkAddr = tcpip.LinkAddress([]byte{0x30, 0x30, 0x30, 0x30, 0x30, 0x31})
|
||||
ep := channel.New(10, 1500, linkAddr)
|
||||
s.CreateNIC(nicid, sniffer.New(ep))
|
||||
s.CreateNIC(nicID, sniffer.New(ep))
|
||||
|
||||
for _, pkt := range tc.packets {
|
||||
ep.InjectLinkAddr(header.IPv4ProtocolNumber, remoteLinkAddr, tcpip.PacketBuffer{
|
||||
|
||||
@@ -180,7 +180,7 @@ func (e *endpoint) handleICMP(r *stack.Route, netHeader buffer.View, pkt tcpip.P
|
||||
// rxNICID so the packet is processed as defined in RFC 4861,
|
||||
// as per RFC 4862 section 5.4.3.
|
||||
|
||||
if e.linkAddrCache.CheckLocalAddress(e.nicid, ProtocolNumber, targetAddr) == 0 {
|
||||
if e.linkAddrCache.CheckLocalAddress(e.nicID, ProtocolNumber, targetAddr) == 0 {
|
||||
// We don't have a useful answer; the best we can do is ignore the request.
|
||||
return
|
||||
}
|
||||
@@ -218,7 +218,7 @@ func (e *endpoint) handleICMP(r *stack.Route, netHeader buffer.View, pkt tcpip.P
|
||||
//
|
||||
// Furthermore, the entirety of NDP handling here seems to be
|
||||
// contradicted by RFC 4861.
|
||||
e.linkAddrCache.AddLinkAddress(e.nicid, r.RemoteAddress, r.RemoteLinkAddress)
|
||||
e.linkAddrCache.AddLinkAddress(e.nicID, r.RemoteAddress, r.RemoteLinkAddress)
|
||||
|
||||
// RFC 4861 Neighbor Discovery for IP version 6 (IPv6)
|
||||
//
|
||||
@@ -274,9 +274,9 @@ func (e *endpoint) handleICMP(r *stack.Route, netHeader buffer.View, pkt tcpip.P
|
||||
// inform the netstack integration that a duplicate address was
|
||||
// detected outside of DAD.
|
||||
|
||||
e.linkAddrCache.AddLinkAddress(e.nicid, targetAddr, r.RemoteLinkAddress)
|
||||
e.linkAddrCache.AddLinkAddress(e.nicID, targetAddr, r.RemoteLinkAddress)
|
||||
if targetAddr != r.RemoteAddress {
|
||||
e.linkAddrCache.AddLinkAddress(e.nicid, r.RemoteAddress, r.RemoteLinkAddress)
|
||||
e.linkAddrCache.AddLinkAddress(e.nicID, r.RemoteAddress, r.RemoteLinkAddress)
|
||||
}
|
||||
|
||||
case header.ICMPv6EchoRequest:
|
||||
|
||||
@@ -43,7 +43,7 @@ const (
|
||||
)
|
||||
|
||||
type endpoint struct {
|
||||
nicid tcpip.NICID
|
||||
nicID tcpip.NICID
|
||||
id stack.NetworkEndpointID
|
||||
prefixLen int
|
||||
linkEP stack.LinkEndpoint
|
||||
@@ -65,7 +65,7 @@ func (e *endpoint) MTU() uint32 {
|
||||
|
||||
// NICID returns the ID of the NIC this endpoint belongs to.
|
||||
func (e *endpoint) NICID() tcpip.NICID {
|
||||
return e.nicid
|
||||
return e.nicID
|
||||
}
|
||||
|
||||
// ID returns the ipv6 endpoint ID.
|
||||
@@ -218,9 +218,9 @@ func (*protocol) ParseAddresses(v buffer.View) (src, dst tcpip.Address) {
|
||||
}
|
||||
|
||||
// NewEndpoint creates a new ipv6 endpoint.
|
||||
func (p *protocol) NewEndpoint(nicid tcpip.NICID, addrWithPrefix tcpip.AddressWithPrefix, linkAddrCache stack.LinkAddressCache, dispatcher stack.TransportDispatcher, linkEP stack.LinkEndpoint) (stack.NetworkEndpoint, *tcpip.Error) {
|
||||
func (p *protocol) NewEndpoint(nicID tcpip.NICID, addrWithPrefix tcpip.AddressWithPrefix, linkAddrCache stack.LinkAddressCache, dispatcher stack.TransportDispatcher, linkEP stack.LinkEndpoint) (stack.NetworkEndpoint, *tcpip.Error) {
|
||||
return &endpoint{
|
||||
nicid: nicid,
|
||||
nicID: nicID,
|
||||
id: stack.NetworkEndpointID{LocalAddress: addrWithPrefix.Address},
|
||||
prefixLen: addrWithPrefix.PrefixLen,
|
||||
linkEP: linkEP,
|
||||
|
||||
@@ -78,7 +78,7 @@ const (
|
||||
// receive and handle NDP related events.
|
||||
type NDPDispatcher interface {
|
||||
// OnDuplicateAddressDetectionStatus will be called when the DAD process
|
||||
// for an address (addr) on a NIC (with ID nicid) completes. resolved
|
||||
// for an address (addr) on a NIC (with ID nicID) completes. resolved
|
||||
// will be set to true if DAD completed successfully (no duplicate addr
|
||||
// detected); false otherwise (addr was detected to be a duplicate on
|
||||
// the link the NIC is a part of, or it was stopped for some other
|
||||
@@ -87,7 +87,7 @@ type NDPDispatcher interface {
|
||||
//
|
||||
// This function is permitted to block indefinitely without interfering
|
||||
// with the stack's operation.
|
||||
OnDuplicateAddressDetectionStatus(nicid tcpip.NICID, addr tcpip.Address, resolved bool, err *tcpip.Error)
|
||||
OnDuplicateAddressDetectionStatus(nicID tcpip.NICID, addr tcpip.Address, resolved bool, err *tcpip.Error)
|
||||
|
||||
// OnDefaultRouterDiscovered will be called when a new default router is
|
||||
// discovered. Implementations must return true along with a new valid
|
||||
@@ -97,7 +97,7 @@ type NDPDispatcher interface {
|
||||
//
|
||||
// This function is not permitted to block indefinitely. This function
|
||||
// is also not permitted to call into the stack.
|
||||
OnDefaultRouterDiscovered(nicid tcpip.NICID, addr tcpip.Address) (bool, []tcpip.Route)
|
||||
OnDefaultRouterDiscovered(nicID tcpip.NICID, addr tcpip.Address) (bool, []tcpip.Route)
|
||||
|
||||
// OnDefaultRouterInvalidated will be called when a discovered default
|
||||
// router is invalidated. Implementers must return a new valid route
|
||||
@@ -105,7 +105,7 @@ type NDPDispatcher interface {
|
||||
//
|
||||
// This function is not permitted to block indefinitely. This function
|
||||
// is also not permitted to call into the stack.
|
||||
OnDefaultRouterInvalidated(nicid tcpip.NICID, addr tcpip.Address) []tcpip.Route
|
||||
OnDefaultRouterInvalidated(nicID tcpip.NICID, addr tcpip.Address) []tcpip.Route
|
||||
}
|
||||
|
||||
// NDPConfigurations is the NDP configurations for the netstack.
|
||||
|
||||
+24
-24
@@ -83,14 +83,14 @@ func TestDADDisabled(t *testing.T) {
|
||||
// ndpDADEvent is a set of parameters that was passed to
|
||||
// ndpDispatcher.OnDuplicateAddressDetectionStatus.
|
||||
type ndpDADEvent struct {
|
||||
nicid tcpip.NICID
|
||||
nicID tcpip.NICID
|
||||
addr tcpip.Address
|
||||
resolved bool
|
||||
err *tcpip.Error
|
||||
}
|
||||
|
||||
type ndpRouterEvent struct {
|
||||
nicid tcpip.NICID
|
||||
nicID tcpip.NICID
|
||||
addr tcpip.Address
|
||||
// true if router was discovered, false if invalidated.
|
||||
discovered bool
|
||||
@@ -108,10 +108,10 @@ type ndpDispatcher struct {
|
||||
}
|
||||
|
||||
// Implements stack.NDPDispatcher.OnDuplicateAddressDetectionStatus.
|
||||
func (n *ndpDispatcher) OnDuplicateAddressDetectionStatus(nicid tcpip.NICID, addr tcpip.Address, resolved bool, err *tcpip.Error) {
|
||||
func (n *ndpDispatcher) OnDuplicateAddressDetectionStatus(nicID tcpip.NICID, addr tcpip.Address, resolved bool, err *tcpip.Error) {
|
||||
if n.dadC != nil {
|
||||
n.dadC <- ndpDADEvent{
|
||||
nicid,
|
||||
nicID,
|
||||
addr,
|
||||
resolved,
|
||||
err,
|
||||
@@ -120,10 +120,10 @@ func (n *ndpDispatcher) OnDuplicateAddressDetectionStatus(nicid tcpip.NICID, add
|
||||
}
|
||||
|
||||
// Implements stack.NDPDispatcher.OnDefaultRouterDiscovered.
|
||||
func (n *ndpDispatcher) OnDefaultRouterDiscovered(nicid tcpip.NICID, addr tcpip.Address) (bool, []tcpip.Route) {
|
||||
func (n *ndpDispatcher) OnDefaultRouterDiscovered(nicID tcpip.NICID, addr tcpip.Address) (bool, []tcpip.Route) {
|
||||
if n.routerC != nil {
|
||||
n.routerC <- ndpRouterEvent{
|
||||
nicid,
|
||||
nicID,
|
||||
addr,
|
||||
true,
|
||||
}
|
||||
@@ -137,17 +137,17 @@ func (n *ndpDispatcher) OnDefaultRouterDiscovered(nicid tcpip.NICID, addr tcpip.
|
||||
rt = append(rt, tcpip.Route{
|
||||
Destination: header.IPv6EmptySubnet,
|
||||
Gateway: addr,
|
||||
NIC: nicid,
|
||||
NIC: nicID,
|
||||
})
|
||||
n.routeTable = rt
|
||||
return true, rt
|
||||
}
|
||||
|
||||
// Implements stack.NDPDispatcher.OnDefaultRouterInvalidated.
|
||||
func (n *ndpDispatcher) OnDefaultRouterInvalidated(nicid tcpip.NICID, addr tcpip.Address) []tcpip.Route {
|
||||
func (n *ndpDispatcher) OnDefaultRouterInvalidated(nicID tcpip.NICID, addr tcpip.Address) []tcpip.Route {
|
||||
if n.routerC != nil {
|
||||
n.routerC <- ndpRouterEvent{
|
||||
nicid,
|
||||
nicID,
|
||||
addr,
|
||||
false,
|
||||
}
|
||||
@@ -157,7 +157,7 @@ func (n *ndpDispatcher) OnDefaultRouterInvalidated(nicid tcpip.NICID, addr tcpip
|
||||
exclude := tcpip.Route{
|
||||
Destination: header.IPv6EmptySubnet,
|
||||
Gateway: addr,
|
||||
NIC: nicid,
|
||||
NIC: nicID,
|
||||
}
|
||||
|
||||
for _, r := range n.routeTable {
|
||||
@@ -254,8 +254,8 @@ func TestDADResolve(t *testing.T) {
|
||||
if e.err != nil {
|
||||
t.Fatal("got DAD error: ", e.err)
|
||||
}
|
||||
if e.nicid != 1 {
|
||||
t.Fatalf("got DAD event w/ nicid = %d, want = 1", e.nicid)
|
||||
if e.nicID != 1 {
|
||||
t.Fatalf("got DAD event w/ nicID = %d, want = 1", e.nicID)
|
||||
}
|
||||
if e.addr != addr1 {
|
||||
t.Fatalf("got DAD event w/ addr = %s, want = %s", addr, addr1)
|
||||
@@ -421,8 +421,8 @@ func TestDADFail(t *testing.T) {
|
||||
if e.err != nil {
|
||||
t.Fatal("got DAD error: ", e.err)
|
||||
}
|
||||
if e.nicid != 1 {
|
||||
t.Fatalf("got DAD event w/ nicid = %d, want = 1", e.nicid)
|
||||
if e.nicID != 1 {
|
||||
t.Fatalf("got DAD event w/ nicID = %d, want = 1", e.nicID)
|
||||
}
|
||||
if e.addr != addr1 {
|
||||
t.Fatalf("got DAD event w/ addr = %s, want = %s", addr, addr1)
|
||||
@@ -492,8 +492,8 @@ func TestDADStop(t *testing.T) {
|
||||
if e.err != nil {
|
||||
t.Fatal("got DAD error: ", e.err)
|
||||
}
|
||||
if e.nicid != 1 {
|
||||
t.Fatalf("got DAD event w/ nicid = %d, want = 1", e.nicid)
|
||||
if e.nicID != 1 {
|
||||
t.Fatalf("got DAD event w/ nicID = %d, want = 1", e.nicID)
|
||||
}
|
||||
if e.addr != addr1 {
|
||||
t.Fatalf("got DAD event w/ addr = %s, want = %s", addr, addr1)
|
||||
@@ -661,8 +661,8 @@ func TestSetNDPConfigurations(t *testing.T) {
|
||||
if e.err != nil {
|
||||
t.Fatal("got DAD error: ", e.err)
|
||||
}
|
||||
if e.nicid != 1 {
|
||||
t.Fatalf("got DAD event w/ nicid = %d, want = 1", e.nicid)
|
||||
if e.nicID != 1 {
|
||||
t.Fatalf("got DAD event w/ nicID = %d, want = 1", e.nicID)
|
||||
}
|
||||
if e.addr != addr1 {
|
||||
t.Fatalf("got DAD event w/ addr = %s, want = %s", addr, addr1)
|
||||
@@ -786,8 +786,8 @@ func TestRouterDiscoveryDispatcherNoRemember(t *testing.T) {
|
||||
e.InjectInbound(header.IPv6ProtocolNumber, raBuf(llAddr2, uint16(lifetime)))
|
||||
select {
|
||||
case r := <-ndpDisp.routerC:
|
||||
if r.nicid != 1 {
|
||||
t.Fatalf("got r.nicid = %d, want = 1", r.nicid)
|
||||
if r.nicID != 1 {
|
||||
t.Fatalf("got r.nicID = %d, want = 1", r.nicID)
|
||||
}
|
||||
if r.addr != llAddr2 {
|
||||
t.Fatalf("got r.addr = %s, want = %s", r.addr, llAddr2)
|
||||
@@ -839,8 +839,8 @@ func TestRouterDiscovery(t *testing.T) {
|
||||
|
||||
select {
|
||||
case r := <-ndpDisp.routerC:
|
||||
if r.nicid != 1 {
|
||||
t.Fatalf("got r.nicid = %d, want = 1", r.nicid)
|
||||
if r.nicID != 1 {
|
||||
t.Fatalf("got r.nicID = %d, want = 1", r.nicID)
|
||||
}
|
||||
if r.addr != addr {
|
||||
t.Fatalf("got r.addr = %s, want = %s", r.addr, addr)
|
||||
@@ -983,8 +983,8 @@ func TestRouterDiscoveryMaxRouters(t *testing.T) {
|
||||
expectedRt[i-1] = tcpip.Route{header.IPv6EmptySubnet, llAddr, 1}
|
||||
select {
|
||||
case r := <-ndpDisp.routerC:
|
||||
if r.nicid != 1 {
|
||||
t.Fatalf("got r.nicid = %d, want = 1", r.nicid)
|
||||
if r.nicID != 1 {
|
||||
t.Fatalf("got r.nicID = %d, want = 1", r.nicID)
|
||||
}
|
||||
if r.addr != llAddr {
|
||||
t.Fatalf("got r.addr = %s, want = %s", r.addr, llAddr)
|
||||
|
||||
@@ -117,7 +117,7 @@ type PacketEndpoint interface {
|
||||
// should construct its own ethernet header for applications.
|
||||
//
|
||||
// HandlePacket takes ownership of pkt.
|
||||
HandlePacket(nicid tcpip.NICID, addr tcpip.LinkAddress, netProto tcpip.NetworkProtocolNumber, pkt tcpip.PacketBuffer)
|
||||
HandlePacket(nicID tcpip.NICID, addr tcpip.LinkAddress, netProto tcpip.NetworkProtocolNumber, pkt tcpip.PacketBuffer)
|
||||
}
|
||||
|
||||
// TransportProtocol is the interface that needs to be implemented by transport
|
||||
@@ -281,7 +281,7 @@ type NetworkProtocol interface {
|
||||
ParseAddresses(v buffer.View) (src, dst tcpip.Address)
|
||||
|
||||
// NewEndpoint creates a new endpoint of this protocol.
|
||||
NewEndpoint(nicid tcpip.NICID, addrWithPrefix tcpip.AddressWithPrefix, linkAddrCache LinkAddressCache, dispatcher TransportDispatcher, sender LinkEndpoint) (NetworkEndpoint, *tcpip.Error)
|
||||
NewEndpoint(nicID tcpip.NICID, addrWithPrefix tcpip.AddressWithPrefix, linkAddrCache LinkAddressCache, dispatcher TransportDispatcher, sender LinkEndpoint) (NetworkEndpoint, *tcpip.Error)
|
||||
|
||||
// SetOption allows enabling/disabling protocol specific features.
|
||||
// SetOption returns an error if the option is not supported or the
|
||||
@@ -440,10 +440,10 @@ type LinkAddressResolver interface {
|
||||
type LinkAddressCache interface {
|
||||
// CheckLocalAddress determines if the given local address exists, and if it
|
||||
// does not exist.
|
||||
CheckLocalAddress(nicid tcpip.NICID, protocol tcpip.NetworkProtocolNumber, addr tcpip.Address) tcpip.NICID
|
||||
CheckLocalAddress(nicID tcpip.NICID, protocol tcpip.NetworkProtocolNumber, addr tcpip.Address) tcpip.NICID
|
||||
|
||||
// AddLinkAddress adds a link address to the cache.
|
||||
AddLinkAddress(nicid tcpip.NICID, addr tcpip.Address, linkAddr tcpip.LinkAddress)
|
||||
AddLinkAddress(nicID tcpip.NICID, addr tcpip.Address, linkAddr tcpip.LinkAddress)
|
||||
|
||||
// GetLinkAddress looks up the cache to translate address to link address (e.g. IP -> MAC).
|
||||
// If the LinkEndpoint requests address resolution and there is a LinkAddressResolver
|
||||
@@ -454,10 +454,10 @@ type LinkAddressCache interface {
|
||||
// If address resolution is required, ErrNoLinkAddress and a notification channel is
|
||||
// returned for the top level caller to block. Channel is closed once address resolution
|
||||
// is complete (success or not).
|
||||
GetLinkAddress(nicid tcpip.NICID, addr, localAddr tcpip.Address, protocol tcpip.NetworkProtocolNumber, w *sleep.Waker) (tcpip.LinkAddress, <-chan struct{}, *tcpip.Error)
|
||||
GetLinkAddress(nicID tcpip.NICID, addr, localAddr tcpip.Address, protocol tcpip.NetworkProtocolNumber, w *sleep.Waker) (tcpip.LinkAddress, <-chan struct{}, *tcpip.Error)
|
||||
|
||||
// RemoveWaker removes a waker that has been added in GetLinkAddress().
|
||||
RemoveWaker(nicid tcpip.NICID, addr tcpip.Address, waker *sleep.Waker)
|
||||
RemoveWaker(nicID tcpip.NICID, addr tcpip.Address, waker *sleep.Waker)
|
||||
}
|
||||
|
||||
// RawFactory produces endpoints for writing various types of raw packets.
|
||||
|
||||
+15
-15
@@ -1055,13 +1055,13 @@ func (s *Stack) CheckNetworkProtocol(protocol tcpip.NetworkProtocolNumber) bool
|
||||
// CheckLocalAddress determines if the given local address exists, and if it
|
||||
// does, returns the id of the NIC it's bound to. Returns 0 if the address
|
||||
// does not exist.
|
||||
func (s *Stack) CheckLocalAddress(nicid tcpip.NICID, protocol tcpip.NetworkProtocolNumber, addr tcpip.Address) tcpip.NICID {
|
||||
func (s *Stack) CheckLocalAddress(nicID tcpip.NICID, protocol tcpip.NetworkProtocolNumber, addr tcpip.Address) tcpip.NICID {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
|
||||
// If a NIC is specified, we try to find the address there only.
|
||||
if nicid != 0 {
|
||||
nic := s.nics[nicid]
|
||||
if nicID != 0 {
|
||||
nic := s.nics[nicID]
|
||||
if nic == nil {
|
||||
return 0
|
||||
}
|
||||
@@ -1120,35 +1120,35 @@ func (s *Stack) SetSpoofing(nicID tcpip.NICID, enable bool) *tcpip.Error {
|
||||
}
|
||||
|
||||
// AddLinkAddress adds a link address to the stack link cache.
|
||||
func (s *Stack) AddLinkAddress(nicid tcpip.NICID, addr tcpip.Address, linkAddr tcpip.LinkAddress) {
|
||||
fullAddr := tcpip.FullAddress{NIC: nicid, Addr: addr}
|
||||
func (s *Stack) AddLinkAddress(nicID tcpip.NICID, addr tcpip.Address, linkAddr tcpip.LinkAddress) {
|
||||
fullAddr := tcpip.FullAddress{NIC: nicID, Addr: addr}
|
||||
s.linkAddrCache.add(fullAddr, linkAddr)
|
||||
// TODO: provide a way for a transport endpoint to receive a signal
|
||||
// that AddLinkAddress for a particular address has been called.
|
||||
}
|
||||
|
||||
// GetLinkAddress implements LinkAddressCache.GetLinkAddress.
|
||||
func (s *Stack) GetLinkAddress(nicid tcpip.NICID, addr, localAddr tcpip.Address, protocol tcpip.NetworkProtocolNumber, waker *sleep.Waker) (tcpip.LinkAddress, <-chan struct{}, *tcpip.Error) {
|
||||
func (s *Stack) GetLinkAddress(nicID tcpip.NICID, addr, localAddr tcpip.Address, protocol tcpip.NetworkProtocolNumber, waker *sleep.Waker) (tcpip.LinkAddress, <-chan struct{}, *tcpip.Error) {
|
||||
s.mu.RLock()
|
||||
nic := s.nics[nicid]
|
||||
nic := s.nics[nicID]
|
||||
if nic == nil {
|
||||
s.mu.RUnlock()
|
||||
return "", nil, tcpip.ErrUnknownNICID
|
||||
}
|
||||
s.mu.RUnlock()
|
||||
|
||||
fullAddr := tcpip.FullAddress{NIC: nicid, Addr: addr}
|
||||
fullAddr := tcpip.FullAddress{NIC: nicID, Addr: addr}
|
||||
linkRes := s.linkAddrResolvers[protocol]
|
||||
return s.linkAddrCache.get(fullAddr, linkRes, localAddr, nic.linkEP, waker)
|
||||
}
|
||||
|
||||
// RemoveWaker implements LinkAddressCache.RemoveWaker.
|
||||
func (s *Stack) RemoveWaker(nicid tcpip.NICID, addr tcpip.Address, waker *sleep.Waker) {
|
||||
func (s *Stack) RemoveWaker(nicID tcpip.NICID, addr tcpip.Address, waker *sleep.Waker) {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
|
||||
if nic := s.nics[nicid]; nic == nil {
|
||||
fullAddr := tcpip.FullAddress{NIC: nicid, Addr: addr}
|
||||
if nic := s.nics[nicID]; nic == nil {
|
||||
fullAddr := tcpip.FullAddress{NIC: nicID, Addr: addr}
|
||||
s.linkAddrCache.removeWaker(fullAddr, waker)
|
||||
}
|
||||
}
|
||||
@@ -1344,9 +1344,9 @@ func (s *Stack) unregisterPacketEndpointLocked(nicID tcpip.NICID, netProto tcpip
|
||||
|
||||
// WritePacket writes data directly to the specified NIC. It adds an ethernet
|
||||
// header based on the arguments.
|
||||
func (s *Stack) WritePacket(nicid tcpip.NICID, dst tcpip.LinkAddress, netProto tcpip.NetworkProtocolNumber, payload buffer.VectorisedView) *tcpip.Error {
|
||||
func (s *Stack) WritePacket(nicID tcpip.NICID, dst tcpip.LinkAddress, netProto tcpip.NetworkProtocolNumber, payload buffer.VectorisedView) *tcpip.Error {
|
||||
s.mu.Lock()
|
||||
nic, ok := s.nics[nicid]
|
||||
nic, ok := s.nics[nicID]
|
||||
s.mu.Unlock()
|
||||
if !ok {
|
||||
return tcpip.ErrUnknownDevice
|
||||
@@ -1372,9 +1372,9 @@ func (s *Stack) WritePacket(nicid tcpip.NICID, dst tcpip.LinkAddress, netProto t
|
||||
|
||||
// WriteRawPacket writes data directly to the specified NIC without adding any
|
||||
// headers.
|
||||
func (s *Stack) WriteRawPacket(nicid tcpip.NICID, payload buffer.VectorisedView) *tcpip.Error {
|
||||
func (s *Stack) WriteRawPacket(nicID tcpip.NICID, payload buffer.VectorisedView) *tcpip.Error {
|
||||
s.mu.Lock()
|
||||
nic, ok := s.nics[nicid]
|
||||
nic, ok := s.nics[nicID]
|
||||
s.mu.Unlock()
|
||||
if !ok {
|
||||
return tcpip.ErrUnknownDevice
|
||||
|
||||
@@ -58,7 +58,7 @@ const (
|
||||
// use the first three: destination address, source address, and transport
|
||||
// protocol. They're all one byte fields to simplify parsing.
|
||||
type fakeNetworkEndpoint struct {
|
||||
nicid tcpip.NICID
|
||||
nicID tcpip.NICID
|
||||
id stack.NetworkEndpointID
|
||||
prefixLen int
|
||||
proto *fakeNetworkProtocol
|
||||
@@ -71,7 +71,7 @@ func (f *fakeNetworkEndpoint) MTU() uint32 {
|
||||
}
|
||||
|
||||
func (f *fakeNetworkEndpoint) NICID() tcpip.NICID {
|
||||
return f.nicid
|
||||
return f.nicID
|
||||
}
|
||||
|
||||
func (f *fakeNetworkEndpoint) PrefixLen() int {
|
||||
@@ -199,9 +199,9 @@ func (*fakeNetworkProtocol) ParseAddresses(v buffer.View) (src, dst tcpip.Addres
|
||||
return tcpip.Address(v[1:2]), tcpip.Address(v[0:1])
|
||||
}
|
||||
|
||||
func (f *fakeNetworkProtocol) NewEndpoint(nicid tcpip.NICID, addrWithPrefix tcpip.AddressWithPrefix, linkAddrCache stack.LinkAddressCache, dispatcher stack.TransportDispatcher, ep stack.LinkEndpoint) (stack.NetworkEndpoint, *tcpip.Error) {
|
||||
func (f *fakeNetworkProtocol) NewEndpoint(nicID tcpip.NICID, addrWithPrefix tcpip.AddressWithPrefix, linkAddrCache stack.LinkAddressCache, dispatcher stack.TransportDispatcher, ep stack.LinkEndpoint) (stack.NetworkEndpoint, *tcpip.Error) {
|
||||
return &fakeNetworkEndpoint{
|
||||
nicid: nicid,
|
||||
nicID: nicID,
|
||||
id: stack.NetworkEndpointID{LocalAddress: addrWithPrefix.Address},
|
||||
prefixLen: addrWithPrefix.PrefixLen,
|
||||
proto: f,
|
||||
@@ -682,11 +682,11 @@ func TestAddressRemovalWithRouteHeld(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func verifyAddress(t *testing.T, s *stack.Stack, nicid tcpip.NICID, addr tcpip.Address) {
|
||||
func verifyAddress(t *testing.T, s *stack.Stack, nicID tcpip.NICID, addr tcpip.Address) {
|
||||
t.Helper()
|
||||
info, ok := s.NICInfo()[nicid]
|
||||
info, ok := s.NICInfo()[nicID]
|
||||
if !ok {
|
||||
t.Fatalf("NICInfo() failed to find nicid=%d", nicid)
|
||||
t.Fatalf("NICInfo() failed to find nicID=%d", nicID)
|
||||
}
|
||||
if len(addr) == 0 {
|
||||
// No address given, verify that there is no address assigned to the NIC.
|
||||
@@ -719,7 +719,7 @@ func TestEndpointExpiration(t *testing.T) {
|
||||
localAddrByte byte = 0x01
|
||||
remoteAddr tcpip.Address = "\x03"
|
||||
noAddr tcpip.Address = ""
|
||||
nicid tcpip.NICID = 1
|
||||
nicID tcpip.NICID = 1
|
||||
)
|
||||
localAddr := tcpip.Address([]byte{localAddrByte})
|
||||
|
||||
@@ -731,7 +731,7 @@ func TestEndpointExpiration(t *testing.T) {
|
||||
})
|
||||
|
||||
ep := channel.New(10, defaultMTU, "")
|
||||
if err := s.CreateNIC(nicid, ep); err != nil {
|
||||
if err := s.CreateNIC(nicID, ep); err != nil {
|
||||
t.Fatal("CreateNIC failed:", err)
|
||||
}
|
||||
|
||||
@@ -748,13 +748,13 @@ func TestEndpointExpiration(t *testing.T) {
|
||||
buf[0] = localAddrByte
|
||||
|
||||
if promiscuous {
|
||||
if err := s.SetPromiscuousMode(nicid, true); err != nil {
|
||||
if err := s.SetPromiscuousMode(nicID, true); err != nil {
|
||||
t.Fatal("SetPromiscuousMode failed:", err)
|
||||
}
|
||||
}
|
||||
|
||||
if spoofing {
|
||||
if err := s.SetSpoofing(nicid, true); err != nil {
|
||||
if err := s.SetSpoofing(nicID, true); err != nil {
|
||||
t.Fatal("SetSpoofing failed:", err)
|
||||
}
|
||||
}
|
||||
@@ -762,7 +762,7 @@ func TestEndpointExpiration(t *testing.T) {
|
||||
// 1. No Address yet, send should only work for spoofing, receive for
|
||||
// promiscuous mode.
|
||||
//-----------------------
|
||||
verifyAddress(t, s, nicid, noAddr)
|
||||
verifyAddress(t, s, nicID, noAddr)
|
||||
if promiscuous {
|
||||
testRecv(t, fakeNet, localAddrByte, ep, buf)
|
||||
} else {
|
||||
@@ -777,20 +777,20 @@ func TestEndpointExpiration(t *testing.T) {
|
||||
|
||||
// 2. Add Address, everything should work.
|
||||
//-----------------------
|
||||
if err := s.AddAddress(nicid, fakeNetNumber, localAddr); err != nil {
|
||||
if err := s.AddAddress(nicID, fakeNetNumber, localAddr); err != nil {
|
||||
t.Fatal("AddAddress failed:", err)
|
||||
}
|
||||
verifyAddress(t, s, nicid, localAddr)
|
||||
verifyAddress(t, s, nicID, localAddr)
|
||||
testRecv(t, fakeNet, localAddrByte, ep, buf)
|
||||
testSendTo(t, s, remoteAddr, ep, nil)
|
||||
|
||||
// 3. Remove the address, send should only work for spoofing, receive
|
||||
// for promiscuous mode.
|
||||
//-----------------------
|
||||
if err := s.RemoveAddress(nicid, localAddr); err != nil {
|
||||
if err := s.RemoveAddress(nicID, localAddr); err != nil {
|
||||
t.Fatal("RemoveAddress failed:", err)
|
||||
}
|
||||
verifyAddress(t, s, nicid, noAddr)
|
||||
verifyAddress(t, s, nicID, noAddr)
|
||||
if promiscuous {
|
||||
testRecv(t, fakeNet, localAddrByte, ep, buf)
|
||||
} else {
|
||||
@@ -805,10 +805,10 @@ func TestEndpointExpiration(t *testing.T) {
|
||||
|
||||
// 4. Add Address back, everything should work again.
|
||||
//-----------------------
|
||||
if err := s.AddAddress(nicid, fakeNetNumber, localAddr); err != nil {
|
||||
if err := s.AddAddress(nicID, fakeNetNumber, localAddr); err != nil {
|
||||
t.Fatal("AddAddress failed:", err)
|
||||
}
|
||||
verifyAddress(t, s, nicid, localAddr)
|
||||
verifyAddress(t, s, nicID, localAddr)
|
||||
testRecv(t, fakeNet, localAddrByte, ep, buf)
|
||||
testSendTo(t, s, remoteAddr, ep, nil)
|
||||
|
||||
@@ -826,10 +826,10 @@ func TestEndpointExpiration(t *testing.T) {
|
||||
// 6. Remove the address. Send should only work for spoofing, receive
|
||||
// for promiscuous mode.
|
||||
//-----------------------
|
||||
if err := s.RemoveAddress(nicid, localAddr); err != nil {
|
||||
if err := s.RemoveAddress(nicID, localAddr); err != nil {
|
||||
t.Fatal("RemoveAddress failed:", err)
|
||||
}
|
||||
verifyAddress(t, s, nicid, noAddr)
|
||||
verifyAddress(t, s, nicID, noAddr)
|
||||
if promiscuous {
|
||||
testRecv(t, fakeNet, localAddrByte, ep, buf)
|
||||
} else {
|
||||
@@ -845,10 +845,10 @@ func TestEndpointExpiration(t *testing.T) {
|
||||
|
||||
// 7. Add Address back, everything should work again.
|
||||
//-----------------------
|
||||
if err := s.AddAddress(nicid, fakeNetNumber, localAddr); err != nil {
|
||||
if err := s.AddAddress(nicID, fakeNetNumber, localAddr); err != nil {
|
||||
t.Fatal("AddAddress failed:", err)
|
||||
}
|
||||
verifyAddress(t, s, nicid, localAddr)
|
||||
verifyAddress(t, s, nicID, localAddr)
|
||||
testRecv(t, fakeNet, localAddrByte, ep, buf)
|
||||
testSendTo(t, s, remoteAddr, ep, nil)
|
||||
testSend(t, r, ep, nil)
|
||||
@@ -856,17 +856,17 @@ func TestEndpointExpiration(t *testing.T) {
|
||||
// 8. Remove the route, sendTo/recv should still work.
|
||||
//-----------------------
|
||||
r.Release()
|
||||
verifyAddress(t, s, nicid, localAddr)
|
||||
verifyAddress(t, s, nicID, localAddr)
|
||||
testRecv(t, fakeNet, localAddrByte, ep, buf)
|
||||
testSendTo(t, s, remoteAddr, ep, nil)
|
||||
|
||||
// 9. Remove the address. Send should only work for spoofing, receive
|
||||
// for promiscuous mode.
|
||||
//-----------------------
|
||||
if err := s.RemoveAddress(nicid, localAddr); err != nil {
|
||||
if err := s.RemoveAddress(nicID, localAddr); err != nil {
|
||||
t.Fatal("RemoveAddress failed:", err)
|
||||
}
|
||||
verifyAddress(t, s, nicid, noAddr)
|
||||
verifyAddress(t, s, nicID, noAddr)
|
||||
if promiscuous {
|
||||
testRecv(t, fakeNet, localAddrByte, ep, buf)
|
||||
} else {
|
||||
@@ -1659,12 +1659,12 @@ func verifyAddresses(t *testing.T, expectedAddresses, gotAddresses []tcpip.Proto
|
||||
}
|
||||
|
||||
func TestAddAddress(t *testing.T) {
|
||||
const nicid = 1
|
||||
const nicID = 1
|
||||
s := stack.New(stack.Options{
|
||||
NetworkProtocols: []stack.NetworkProtocol{fakeNetFactory()},
|
||||
})
|
||||
ep := channel.New(10, defaultMTU, "")
|
||||
if err := s.CreateNIC(nicid, ep); err != nil {
|
||||
if err := s.CreateNIC(nicID, ep); err != nil {
|
||||
t.Fatal("CreateNIC failed:", err)
|
||||
}
|
||||
|
||||
@@ -1672,7 +1672,7 @@ func TestAddAddress(t *testing.T) {
|
||||
expectedAddresses := make([]tcpip.ProtocolAddress, 0, 2)
|
||||
for _, addrLen := range []int{4, 16} {
|
||||
address := addrGen.next(addrLen)
|
||||
if err := s.AddAddress(nicid, fakeNetNumber, address); err != nil {
|
||||
if err := s.AddAddress(nicID, fakeNetNumber, address); err != nil {
|
||||
t.Fatalf("AddAddress(address=%s) failed: %s", address, err)
|
||||
}
|
||||
expectedAddresses = append(expectedAddresses, tcpip.ProtocolAddress{
|
||||
@@ -1681,17 +1681,17 @@ func TestAddAddress(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
gotAddresses := s.AllAddresses()[nicid]
|
||||
gotAddresses := s.AllAddresses()[nicID]
|
||||
verifyAddresses(t, expectedAddresses, gotAddresses)
|
||||
}
|
||||
|
||||
func TestAddProtocolAddress(t *testing.T) {
|
||||
const nicid = 1
|
||||
const nicID = 1
|
||||
s := stack.New(stack.Options{
|
||||
NetworkProtocols: []stack.NetworkProtocol{fakeNetFactory()},
|
||||
})
|
||||
ep := channel.New(10, defaultMTU, "")
|
||||
if err := s.CreateNIC(nicid, ep); err != nil {
|
||||
if err := s.CreateNIC(nicID, ep); err != nil {
|
||||
t.Fatal("CreateNIC failed:", err)
|
||||
}
|
||||
|
||||
@@ -1708,24 +1708,24 @@ func TestAddProtocolAddress(t *testing.T) {
|
||||
PrefixLen: prefixLen,
|
||||
},
|
||||
}
|
||||
if err := s.AddProtocolAddress(nicid, protocolAddress); err != nil {
|
||||
if err := s.AddProtocolAddress(nicID, protocolAddress); err != nil {
|
||||
t.Errorf("AddProtocolAddress(%+v) failed: %s", protocolAddress, err)
|
||||
}
|
||||
expectedAddresses = append(expectedAddresses, protocolAddress)
|
||||
}
|
||||
}
|
||||
|
||||
gotAddresses := s.AllAddresses()[nicid]
|
||||
gotAddresses := s.AllAddresses()[nicID]
|
||||
verifyAddresses(t, expectedAddresses, gotAddresses)
|
||||
}
|
||||
|
||||
func TestAddAddressWithOptions(t *testing.T) {
|
||||
const nicid = 1
|
||||
const nicID = 1
|
||||
s := stack.New(stack.Options{
|
||||
NetworkProtocols: []stack.NetworkProtocol{fakeNetFactory()},
|
||||
})
|
||||
ep := channel.New(10, defaultMTU, "")
|
||||
if err := s.CreateNIC(nicid, ep); err != nil {
|
||||
if err := s.CreateNIC(nicID, ep); err != nil {
|
||||
t.Fatal("CreateNIC failed:", err)
|
||||
}
|
||||
|
||||
@@ -1736,7 +1736,7 @@ func TestAddAddressWithOptions(t *testing.T) {
|
||||
for _, addrLen := range addrLenRange {
|
||||
for _, behavior := range behaviorRange {
|
||||
address := addrGen.next(addrLen)
|
||||
if err := s.AddAddressWithOptions(nicid, fakeNetNumber, address, behavior); err != nil {
|
||||
if err := s.AddAddressWithOptions(nicID, fakeNetNumber, address, behavior); err != nil {
|
||||
t.Fatalf("AddAddressWithOptions(address=%s, behavior=%d) failed: %s", address, behavior, err)
|
||||
}
|
||||
expectedAddresses = append(expectedAddresses, tcpip.ProtocolAddress{
|
||||
@@ -1746,17 +1746,17 @@ func TestAddAddressWithOptions(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
gotAddresses := s.AllAddresses()[nicid]
|
||||
gotAddresses := s.AllAddresses()[nicID]
|
||||
verifyAddresses(t, expectedAddresses, gotAddresses)
|
||||
}
|
||||
|
||||
func TestAddProtocolAddressWithOptions(t *testing.T) {
|
||||
const nicid = 1
|
||||
const nicID = 1
|
||||
s := stack.New(stack.Options{
|
||||
NetworkProtocols: []stack.NetworkProtocol{fakeNetFactory()},
|
||||
})
|
||||
ep := channel.New(10, defaultMTU, "")
|
||||
if err := s.CreateNIC(nicid, ep); err != nil {
|
||||
if err := s.CreateNIC(nicID, ep); err != nil {
|
||||
t.Fatal("CreateNIC failed:", err)
|
||||
}
|
||||
|
||||
@@ -1775,7 +1775,7 @@ func TestAddProtocolAddressWithOptions(t *testing.T) {
|
||||
PrefixLen: prefixLen,
|
||||
},
|
||||
}
|
||||
if err := s.AddProtocolAddressWithOptions(nicid, protocolAddress, behavior); err != nil {
|
||||
if err := s.AddProtocolAddressWithOptions(nicID, protocolAddress, behavior); err != nil {
|
||||
t.Fatalf("AddProtocolAddressWithOptions(%+v, %d) failed: %s", protocolAddress, behavior, err)
|
||||
}
|
||||
expectedAddresses = append(expectedAddresses, protocolAddress)
|
||||
@@ -1783,7 +1783,7 @@ func TestAddProtocolAddressWithOptions(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
gotAddresses := s.AllAddresses()[nicid]
|
||||
gotAddresses := s.AllAddresses()[nicID]
|
||||
verifyAddresses(t, expectedAddresses, gotAddresses)
|
||||
}
|
||||
|
||||
@@ -2030,8 +2030,8 @@ func TestNICAutoGenAddrDoesDAD(t *testing.T) {
|
||||
if e.err != nil {
|
||||
t.Fatal("got DAD error: ", e.err)
|
||||
}
|
||||
if e.nicid != 1 {
|
||||
t.Fatalf("got DAD event w/ nicid = %d, want = 1", e.nicid)
|
||||
if e.nicID != 1 {
|
||||
t.Fatalf("got DAD event w/ nicID = %d, want = 1", e.nicID)
|
||||
}
|
||||
if e.addr != linkLocalAddr {
|
||||
t.Fatalf("got DAD event w/ addr = %s, want = %s", addr, linkLocalAddr)
|
||||
|
||||
@@ -79,17 +79,17 @@ func newDualTestContextMultiNic(t *testing.T, mtu uint32, linkEpNames []string)
|
||||
linkEPs := make(map[string]*channel.Endpoint)
|
||||
for i, linkEpName := range linkEpNames {
|
||||
channelEP := channel.New(256, mtu, "")
|
||||
nicid := tcpip.NICID(i + 1)
|
||||
if err := s.CreateNamedNIC(nicid, linkEpName, channelEP); err != nil {
|
||||
nicID := tcpip.NICID(i + 1)
|
||||
if err := s.CreateNamedNIC(nicID, linkEpName, channelEP); err != nil {
|
||||
t.Fatalf("CreateNIC failed: %v", err)
|
||||
}
|
||||
linkEPs[linkEpName] = channelEP
|
||||
|
||||
if err := s.AddAddress(nicid, ipv4.ProtocolNumber, stackAddr); err != nil {
|
||||
if err := s.AddAddress(nicID, ipv4.ProtocolNumber, stackAddr); err != nil {
|
||||
t.Fatalf("AddAddress IPv4 failed: %v", err)
|
||||
}
|
||||
|
||||
if err := s.AddAddress(nicid, ipv6.ProtocolNumber, stackV6Addr); err != nil {
|
||||
if err := s.AddAddress(nicID, ipv6.ProtocolNumber, stackV6Addr); err != nil {
|
||||
t.Fatalf("AddAddress IPv6 failed: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,13 +278,13 @@ func (e *endpoint) write(p tcpip.Payloader, opts tcpip.WriteOptions) (int64, <-c
|
||||
} else {
|
||||
// Reject destination address if it goes through a different
|
||||
// NIC than the endpoint was bound to.
|
||||
nicid := to.NIC
|
||||
nicID := to.NIC
|
||||
if e.BindNICID != 0 {
|
||||
if nicid != 0 && nicid != e.BindNICID {
|
||||
if nicID != 0 && nicID != e.BindNICID {
|
||||
return 0, nil, tcpip.ErrNoRoute
|
||||
}
|
||||
|
||||
nicid = e.BindNICID
|
||||
nicID = e.BindNICID
|
||||
}
|
||||
|
||||
toCopy := *to
|
||||
@@ -295,7 +295,7 @@ func (e *endpoint) write(p tcpip.Payloader, opts tcpip.WriteOptions) (int64, <-c
|
||||
}
|
||||
|
||||
// Find the enpoint.
|
||||
r, err := e.stack.FindRoute(nicid, e.BindAddr, to.Addr, netProto, false /* multicastLoop */)
|
||||
r, err := e.stack.FindRoute(nicID, e.BindAddr, to.Addr, netProto, false /* multicastLoop */)
|
||||
if err != nil {
|
||||
return 0, nil, err
|
||||
}
|
||||
@@ -483,7 +483,7 @@ func (e *endpoint) Connect(addr tcpip.FullAddress) *tcpip.Error {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
|
||||
nicid := addr.NIC
|
||||
nicID := addr.NIC
|
||||
localPort := uint16(0)
|
||||
switch e.state {
|
||||
case stateBound, stateConnected:
|
||||
@@ -492,11 +492,11 @@ func (e *endpoint) Connect(addr tcpip.FullAddress) *tcpip.Error {
|
||||
break
|
||||
}
|
||||
|
||||
if nicid != 0 && nicid != e.BindNICID {
|
||||
if nicID != 0 && nicID != e.BindNICID {
|
||||
return tcpip.ErrInvalidEndpointState
|
||||
}
|
||||
|
||||
nicid = e.BindNICID
|
||||
nicID = e.BindNICID
|
||||
default:
|
||||
return tcpip.ErrInvalidEndpointState
|
||||
}
|
||||
@@ -507,7 +507,7 @@ func (e *endpoint) Connect(addr tcpip.FullAddress) *tcpip.Error {
|
||||
}
|
||||
|
||||
// Find a route to the desired destination.
|
||||
r, err := e.stack.FindRoute(nicid, e.BindAddr, addr.Addr, netProto, false /* multicastLoop */)
|
||||
r, err := e.stack.FindRoute(nicID, e.BindAddr, addr.Addr, netProto, false /* multicastLoop */)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -524,14 +524,14 @@ func (e *endpoint) Connect(addr tcpip.FullAddress) *tcpip.Error {
|
||||
// v6only is set to false and this is an ipv6 endpoint.
|
||||
netProtos := []tcpip.NetworkProtocolNumber{netProto}
|
||||
|
||||
id, err = e.registerWithStack(nicid, netProtos, id)
|
||||
id, err = e.registerWithStack(nicID, netProtos, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
e.ID = id
|
||||
e.route = r.Clone()
|
||||
e.RegisterNICID = nicid
|
||||
e.RegisterNICID = nicID
|
||||
|
||||
e.state = stateConnected
|
||||
|
||||
@@ -582,18 +582,18 @@ func (*endpoint) Accept() (tcpip.Endpoint, *waiter.Queue, *tcpip.Error) {
|
||||
return nil, nil, tcpip.ErrNotSupported
|
||||
}
|
||||
|
||||
func (e *endpoint) registerWithStack(nicid tcpip.NICID, netProtos []tcpip.NetworkProtocolNumber, id stack.TransportEndpointID) (stack.TransportEndpointID, *tcpip.Error) {
|
||||
func (e *endpoint) registerWithStack(nicID tcpip.NICID, netProtos []tcpip.NetworkProtocolNumber, id stack.TransportEndpointID) (stack.TransportEndpointID, *tcpip.Error) {
|
||||
if id.LocalPort != 0 {
|
||||
// The endpoint already has a local port, just attempt to
|
||||
// register it.
|
||||
err := e.stack.RegisterTransportEndpoint(nicid, netProtos, e.TransProto, id, e, false /* reuse */, 0 /* bindToDevice */)
|
||||
err := e.stack.RegisterTransportEndpoint(nicID, netProtos, e.TransProto, id, e, false /* reuse */, 0 /* bindToDevice */)
|
||||
return id, err
|
||||
}
|
||||
|
||||
// We need to find a port for the endpoint.
|
||||
_, err := e.stack.PickEphemeralPort(func(p uint16) (bool, *tcpip.Error) {
|
||||
id.LocalPort = p
|
||||
err := e.stack.RegisterTransportEndpoint(nicid, netProtos, e.TransProto, id, e, false /* reuse */, 0 /* bindtodevice */)
|
||||
err := e.stack.RegisterTransportEndpoint(nicID, netProtos, e.TransProto, id, e, false /* reuse */, 0 /* bindtodevice */)
|
||||
switch err {
|
||||
case nil:
|
||||
return true, nil
|
||||
|
||||
@@ -266,7 +266,7 @@ func (ep *endpoint) GetSockOpt(opt interface{}) *tcpip.Error {
|
||||
}
|
||||
|
||||
// HandlePacket implements stack.PacketEndpoint.HandlePacket.
|
||||
func (ep *endpoint) HandlePacket(nicid tcpip.NICID, localAddr tcpip.LinkAddress, netProto tcpip.NetworkProtocolNumber, pkt tcpip.PacketBuffer) {
|
||||
func (ep *endpoint) HandlePacket(nicID tcpip.NICID, localAddr tcpip.LinkAddress, netProto tcpip.NetworkProtocolNumber, pkt tcpip.PacketBuffer) {
|
||||
ep.rcvMu.Lock()
|
||||
|
||||
// Drop the packet if our buffer is currently full.
|
||||
@@ -293,13 +293,13 @@ func (ep *endpoint) HandlePacket(nicid tcpip.NICID, localAddr tcpip.LinkAddress,
|
||||
// Get info directly from the ethernet header.
|
||||
hdr := header.Ethernet(pkt.LinkHeader)
|
||||
packet.senderAddr = tcpip.FullAddress{
|
||||
NIC: nicid,
|
||||
NIC: nicID,
|
||||
Addr: tcpip.Address(hdr.SourceAddress()),
|
||||
}
|
||||
} else {
|
||||
// Guess the would-be ethernet header.
|
||||
packet.senderAddr = tcpip.FullAddress{
|
||||
NIC: nicid,
|
||||
NIC: nicID,
|
||||
Addr: tcpip.Address(localAddr),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1214,9 +1214,9 @@ func (e *endpoint) SetSockOpt(opt interface{}) *tcpip.Error {
|
||||
e.bindToDevice = 0
|
||||
return nil
|
||||
}
|
||||
for nicid, nic := range e.stack.NICInfo() {
|
||||
for nicID, nic := range e.stack.NICInfo() {
|
||||
if nic.Name == string(v) {
|
||||
e.bindToDevice = nicid
|
||||
e.bindToDevice = nicID
|
||||
return nil
|
||||
}
|
||||
}
|
||||
@@ -1634,7 +1634,7 @@ func (e *endpoint) connect(addr tcpip.FullAddress, handshake bool, run bool) *tc
|
||||
return tcpip.ErrAlreadyConnected
|
||||
}
|
||||
|
||||
nicid := addr.NIC
|
||||
nicID := addr.NIC
|
||||
switch e.state {
|
||||
case StateBound:
|
||||
// If we're already bound to a NIC but the caller is requesting
|
||||
@@ -1643,11 +1643,11 @@ func (e *endpoint) connect(addr tcpip.FullAddress, handshake bool, run bool) *tc
|
||||
break
|
||||
}
|
||||
|
||||
if nicid != 0 && nicid != e.boundNICID {
|
||||
if nicID != 0 && nicID != e.boundNICID {
|
||||
return tcpip.ErrNoRoute
|
||||
}
|
||||
|
||||
nicid = e.boundNICID
|
||||
nicID = e.boundNICID
|
||||
|
||||
case StateInitial:
|
||||
// Nothing to do. We'll eventually fill-in the gaps in the ID (if any)
|
||||
@@ -1666,7 +1666,7 @@ func (e *endpoint) connect(addr tcpip.FullAddress, handshake bool, run bool) *tc
|
||||
}
|
||||
|
||||
// Find a route to the desired destination.
|
||||
r, err := e.stack.FindRoute(nicid, e.ID.LocalAddress, addr.Addr, netProto, false /* multicastLoop */)
|
||||
r, err := e.stack.FindRoute(nicID, e.ID.LocalAddress, addr.Addr, netProto, false /* multicastLoop */)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -1681,7 +1681,7 @@ func (e *endpoint) connect(addr tcpip.FullAddress, handshake bool, run bool) *tc
|
||||
|
||||
if e.ID.LocalPort != 0 {
|
||||
// The endpoint is bound to a port, attempt to register it.
|
||||
err := e.stack.RegisterTransportEndpoint(nicid, netProtos, ProtocolNumber, e.ID, e, e.reusePort, e.bindToDevice)
|
||||
err := e.stack.RegisterTransportEndpoint(nicID, netProtos, ProtocolNumber, e.ID, e, e.reusePort, e.bindToDevice)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -1716,7 +1716,7 @@ func (e *endpoint) connect(addr tcpip.FullAddress, handshake bool, run bool) *tc
|
||||
|
||||
id := e.ID
|
||||
id.LocalPort = p
|
||||
switch e.stack.RegisterTransportEndpoint(nicid, netProtos, ProtocolNumber, id, e, e.reusePort, e.bindToDevice) {
|
||||
switch e.stack.RegisterTransportEndpoint(nicID, netProtos, ProtocolNumber, id, e, e.reusePort, e.bindToDevice) {
|
||||
case nil:
|
||||
e.ID = id
|
||||
return true, nil
|
||||
@@ -1741,7 +1741,7 @@ func (e *endpoint) connect(addr tcpip.FullAddress, handshake bool, run bool) *tc
|
||||
e.isRegistered = true
|
||||
e.state = StateConnecting
|
||||
e.route = r.Clone()
|
||||
e.boundNICID = nicid
|
||||
e.boundNICID = nicID
|
||||
e.effectiveNetProtos = netProtos
|
||||
e.connectingAddress = connectingAddr
|
||||
|
||||
|
||||
@@ -282,7 +282,7 @@ func (e *endpoint) prepareForWrite(to *tcpip.FullAddress) (retry bool, err *tcpi
|
||||
// connectRoute establishes a route to the specified interface or the
|
||||
// configured multicast interface if no interface is specified and the
|
||||
// specified address is a multicast address.
|
||||
func (e *endpoint) connectRoute(nicid tcpip.NICID, addr tcpip.FullAddress, netProto tcpip.NetworkProtocolNumber) (stack.Route, tcpip.NICID, *tcpip.Error) {
|
||||
func (e *endpoint) connectRoute(nicID tcpip.NICID, addr tcpip.FullAddress, netProto tcpip.NetworkProtocolNumber) (stack.Route, tcpip.NICID, *tcpip.Error) {
|
||||
localAddr := e.ID.LocalAddress
|
||||
if isBroadcastOrMulticast(localAddr) {
|
||||
// A packet can only originate from a unicast address (i.e., an interface).
|
||||
@@ -290,20 +290,20 @@ func (e *endpoint) connectRoute(nicid tcpip.NICID, addr tcpip.FullAddress, netPr
|
||||
}
|
||||
|
||||
if header.IsV4MulticastAddress(addr.Addr) || header.IsV6MulticastAddress(addr.Addr) {
|
||||
if nicid == 0 {
|
||||
nicid = e.multicastNICID
|
||||
if nicID == 0 {
|
||||
nicID = e.multicastNICID
|
||||
}
|
||||
if localAddr == "" && nicid == 0 {
|
||||
if localAddr == "" && nicID == 0 {
|
||||
localAddr = e.multicastAddr
|
||||
}
|
||||
}
|
||||
|
||||
// Find a route to the desired destination.
|
||||
r, err := e.stack.FindRoute(nicid, localAddr, addr.Addr, netProto, e.multicastLoop)
|
||||
r, err := e.stack.FindRoute(nicID, localAddr, addr.Addr, netProto, e.multicastLoop)
|
||||
if err != nil {
|
||||
return stack.Route{}, 0, err
|
||||
}
|
||||
return r, nicid, nil
|
||||
return r, nicID, nil
|
||||
}
|
||||
|
||||
// Write writes data to the endpoint's peer. This method does not block
|
||||
@@ -382,13 +382,13 @@ func (e *endpoint) write(p tcpip.Payloader, opts tcpip.WriteOptions) (int64, <-c
|
||||
} else {
|
||||
// Reject destination address if it goes through a different
|
||||
// NIC than the endpoint was bound to.
|
||||
nicid := to.NIC
|
||||
nicID := to.NIC
|
||||
if e.BindNICID != 0 {
|
||||
if nicid != 0 && nicid != e.BindNICID {
|
||||
if nicID != 0 && nicID != e.BindNICID {
|
||||
return 0, nil, tcpip.ErrNoRoute
|
||||
}
|
||||
|
||||
nicid = e.BindNICID
|
||||
nicID = e.BindNICID
|
||||
}
|
||||
|
||||
if to.Addr == header.IPv4Broadcast && !e.broadcast {
|
||||
@@ -400,7 +400,7 @@ func (e *endpoint) write(p tcpip.Payloader, opts tcpip.WriteOptions) (int64, <-c
|
||||
return 0, nil, err
|
||||
}
|
||||
|
||||
r, _, err := e.connectRoute(nicid, *to, netProto)
|
||||
r, _, err := e.connectRoute(nicID, *to, netProto)
|
||||
if err != nil {
|
||||
return 0, nil, err
|
||||
}
|
||||
@@ -622,9 +622,9 @@ func (e *endpoint) SetSockOpt(opt interface{}) *tcpip.Error {
|
||||
e.bindToDevice = 0
|
||||
return nil
|
||||
}
|
||||
for nicid, nic := range e.stack.NICInfo() {
|
||||
for nicID, nic := range e.stack.NICInfo() {
|
||||
if nic.Name == string(v) {
|
||||
e.bindToDevice = nicid
|
||||
e.bindToDevice = nicID
|
||||
return nil
|
||||
}
|
||||
}
|
||||
@@ -907,7 +907,7 @@ func (e *endpoint) Connect(addr tcpip.FullAddress) *tcpip.Error {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
|
||||
nicid := addr.NIC
|
||||
nicID := addr.NIC
|
||||
var localPort uint16
|
||||
switch e.state {
|
||||
case StateInitial:
|
||||
@@ -917,16 +917,16 @@ func (e *endpoint) Connect(addr tcpip.FullAddress) *tcpip.Error {
|
||||
break
|
||||
}
|
||||
|
||||
if nicid != 0 && nicid != e.BindNICID {
|
||||
if nicID != 0 && nicID != e.BindNICID {
|
||||
return tcpip.ErrInvalidEndpointState
|
||||
}
|
||||
|
||||
nicid = e.BindNICID
|
||||
nicID = e.BindNICID
|
||||
default:
|
||||
return tcpip.ErrInvalidEndpointState
|
||||
}
|
||||
|
||||
r, nicid, err := e.connectRoute(nicid, addr, netProto)
|
||||
r, nicID, err := e.connectRoute(nicID, addr, netProto)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -954,7 +954,7 @@ func (e *endpoint) Connect(addr tcpip.FullAddress) *tcpip.Error {
|
||||
}
|
||||
}
|
||||
|
||||
id, err = e.registerWithStack(nicid, netProtos, id)
|
||||
id, err = e.registerWithStack(nicID, netProtos, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -967,7 +967,7 @@ func (e *endpoint) Connect(addr tcpip.FullAddress) *tcpip.Error {
|
||||
e.ID = id
|
||||
e.route = r.Clone()
|
||||
e.dstPort = addr.Port
|
||||
e.RegisterNICID = nicid
|
||||
e.RegisterNICID = nicID
|
||||
e.effectiveNetProtos = netProtos
|
||||
|
||||
e.state = StateConnected
|
||||
@@ -1022,7 +1022,7 @@ func (*endpoint) Accept() (tcpip.Endpoint, *waiter.Queue, *tcpip.Error) {
|
||||
return nil, nil, tcpip.ErrNotSupported
|
||||
}
|
||||
|
||||
func (e *endpoint) registerWithStack(nicid tcpip.NICID, netProtos []tcpip.NetworkProtocolNumber, id stack.TransportEndpointID) (stack.TransportEndpointID, *tcpip.Error) {
|
||||
func (e *endpoint) registerWithStack(nicID tcpip.NICID, netProtos []tcpip.NetworkProtocolNumber, id stack.TransportEndpointID) (stack.TransportEndpointID, *tcpip.Error) {
|
||||
if e.ID.LocalPort == 0 {
|
||||
port, err := e.stack.ReservePort(netProtos, ProtocolNumber, id.LocalAddress, id.LocalPort, e.reusePort, e.bindToDevice)
|
||||
if err != nil {
|
||||
@@ -1031,7 +1031,7 @@ func (e *endpoint) registerWithStack(nicid tcpip.NICID, netProtos []tcpip.Networ
|
||||
id.LocalPort = port
|
||||
}
|
||||
|
||||
err := e.stack.RegisterTransportEndpoint(nicid, netProtos, ProtocolNumber, id, e, e.reusePort, e.bindToDevice)
|
||||
err := e.stack.RegisterTransportEndpoint(nicID, netProtos, ProtocolNumber, id, e, e.reusePort, e.bindToDevice)
|
||||
if err != nil {
|
||||
e.stack.ReleasePort(netProtos, ProtocolNumber, id.LocalAddress, id.LocalPort, e.bindToDevice)
|
||||
}
|
||||
@@ -1061,11 +1061,11 @@ func (e *endpoint) bindLocked(addr tcpip.FullAddress) *tcpip.Error {
|
||||
}
|
||||
}
|
||||
|
||||
nicid := addr.NIC
|
||||
nicID := addr.NIC
|
||||
if len(addr.Addr) != 0 && !isBroadcastOrMulticast(addr.Addr) {
|
||||
// A local unicast address was specified, verify that it's valid.
|
||||
nicid = e.stack.CheckLocalAddress(addr.NIC, netProto, addr.Addr)
|
||||
if nicid == 0 {
|
||||
nicID = e.stack.CheckLocalAddress(addr.NIC, netProto, addr.Addr)
|
||||
if nicID == 0 {
|
||||
return tcpip.ErrBadLocalAddress
|
||||
}
|
||||
}
|
||||
@@ -1074,13 +1074,13 @@ func (e *endpoint) bindLocked(addr tcpip.FullAddress) *tcpip.Error {
|
||||
LocalPort: addr.Port,
|
||||
LocalAddress: addr.Addr,
|
||||
}
|
||||
id, err = e.registerWithStack(nicid, netProtos, id)
|
||||
id, err = e.registerWithStack(nicID, netProtos, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
e.ID = id
|
||||
e.RegisterNICID = nicid
|
||||
e.RegisterNICID = nicID
|
||||
e.effectiveNetProtos = netProtos
|
||||
|
||||
// Mark endpoint as bound.
|
||||
|
||||
Reference in New Issue
Block a user