summaryrefslogtreecommitdiffhomepage
path: root/pkg/tcpip/network/ipv6/ndp.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/tcpip/network/ipv6/ndp.go')
-rw-r--r--pkg/tcpip/network/ipv6/ndp.go32
1 files changed, 5 insertions, 27 deletions
diff --git a/pkg/tcpip/network/ipv6/ndp.go b/pkg/tcpip/network/ipv6/ndp.go
index a55330b7e..53c043dcd 100644
--- a/pkg/tcpip/network/ipv6/ndp.go
+++ b/pkg/tcpip/network/ipv6/ndp.go
@@ -466,20 +466,6 @@ type ndpState struct {
temporaryAddressDesyncFactor time.Duration
}
-type remainingCounter struct {
- mu struct {
- sync.Mutex
-
- remaining uint8
- }
-}
-
-func (r *remainingCounter) init(max uint8) {
- r.mu.Lock()
- defer r.mu.Unlock()
- r.mu.remaining = max
-}
-
// defaultRouterState holds data associated with a default router discovered by
// a Router Advertisement (RA).
type defaultRouterState struct {
@@ -1687,7 +1673,8 @@ func (ndp *ndpState) startSolicitingRouters() {
return
}
- if ndp.configs.MaxRtrSolicitations == 0 {
+ remaining := ndp.configs.MaxRtrSolicitations
+ if remaining == 0 {
return
}
@@ -1698,9 +1685,6 @@ func (ndp *ndpState) startSolicitingRouters() {
delay = time.Duration(rand.Int63n(int64(ndp.configs.MaxRtrSolicitationDelay)))
}
- var remaining remainingCounter
- remaining.init(ndp.configs.MaxRtrSolicitations)
-
// Protected by ndp.ep.mu.
done := false
@@ -1754,19 +1738,13 @@ func (ndp *ndpState) startSolicitingRouters() {
panic(fmt.Sprintf("failed to add IP header: %s", err))
}
- // Okay to hold this lock while writing packets since we use a different
- // lock per router solicitaiton timer so there will not be any lock
- // contention.
- remaining.mu.Lock()
- defer remaining.mu.Unlock()
-
if err := ndp.ep.nic.WritePacketToRemote(header.EthernetAddressFromMulticastIPv6Address(header.IPv6AllRoutersMulticastAddress), nil /* gso */, ProtocolNumber, pkt); err != nil {
sent.dropped.Increment()
// Don't send any more messages if we had an error.
- remaining.mu.remaining = 0
+ remaining = 0
} else {
sent.routerSolicit.Increment()
- remaining.mu.remaining--
+ remaining--
}
ndp.ep.mu.Lock()
@@ -1777,7 +1755,7 @@ func (ndp *ndpState) startSolicitingRouters() {
return
}
- if remaining.mu.remaining == 0 {
+ if remaining == 0 {
// We are done soliciting routers.
ndp.stopSolicitingRouters()
return