summaryrefslogtreecommitdiffhomepage
path: root/pkg/tcpip/link
diff options
context:
space:
mode:
authorZhaozhong Ni <nzz@google.com>2018-07-17 10:13:57 -0700
committerShentubot <shentubot@google.com>2018-07-17 10:15:00 -0700
commitbeb89bb75749620969b0e1dea65240bf5d4324b2 (patch)
tree68d97bd27e40bdf4f927d0dd0f0dfebe859197bd /pkg/tcpip/link
parent29e00c943a61dfcfd4ac8d3f6f526eab641c44a6 (diff)
netstack: update goroutine save / restore safety comments.
PiperOrigin-RevId: 204930314 Change-Id: Ifc4c41ed28616cd57fafbf7c92e87141a945c41f
Diffstat (limited to 'pkg/tcpip/link')
-rw-r--r--pkg/tcpip/link/fdbased/endpoint.go5
-rw-r--r--pkg/tcpip/link/sharedmem/sharedmem.go5
2 files changed, 8 insertions, 2 deletions
diff --git a/pkg/tcpip/link/fdbased/endpoint.go b/pkg/tcpip/link/fdbased/endpoint.go
index 413f77dcc..8fc009160 100644
--- a/pkg/tcpip/link/fdbased/endpoint.go
+++ b/pkg/tcpip/link/fdbased/endpoint.go
@@ -108,7 +108,10 @@ func New(opts *Options) tcpip.LinkEndpointID {
// dispatches them via the provided dispatcher.
func (e *endpoint) Attach(dispatcher stack.NetworkDispatcher) {
e.attached = true
- go e.dispatchLoop(dispatcher) // S/R-FIXME
+ // Link endpoints are not savable. When transportation endpoints are
+ // saved, they stop sending outgoing packets and all incoming packets
+ // are rejected.
+ go e.dispatchLoop(dispatcher) // S/R-SAFE: See above.
}
// IsAttached implements stack.LinkEndpoint.IsAttached.
diff --git a/pkg/tcpip/link/sharedmem/sharedmem.go b/pkg/tcpip/link/sharedmem/sharedmem.go
index 223eb3a1b..eabf35bd3 100644
--- a/pkg/tcpip/link/sharedmem/sharedmem.go
+++ b/pkg/tcpip/link/sharedmem/sharedmem.go
@@ -142,7 +142,10 @@ func (e *endpoint) Attach(dispatcher stack.NetworkDispatcher) {
if !e.workerStarted && atomic.LoadUint32(&e.stopRequested) == 0 {
e.workerStarted = true
e.completed.Add(1)
- go e.dispatchLoop(dispatcher) // S/R-FIXME
+ // Link endpoints are not savable. When transportation endpoints
+ // are saved, they stop sending outgoing packets and all
+ // incoming packets are rejected.
+ go e.dispatchLoop(dispatcher) // S/R-SAFE: see above.
}
e.mu.Unlock()
}