MCPcopy Create free account
hub / github.com/SamNet-dev/snix / Close

Method Close

platform/linux/nfqueue.go:224–257  ·  view source on GitHub ↗

Close tears down everything Open set up. Safe to call multiple times.

()

Source from the content-addressed store, hash-verified

222
223// Close tears down everything Open set up. Safe to call multiple times.
224func (b *Backend) Close() error {
225 b.mu.Lock()
226 defer b.mu.Unlock()
227 if !b.opened {
228 return nil
229 }
230 b.opened = false
231 select {
232 case <-b.closed:
233 default:
234 close(b.closed)
235 }
236 var firstErr error
237 if b.cancelReader != nil {
238 b.cancelReader()
239 b.cancelReader = nil
240 }
241 if b.nfq != nil {
242 if err := b.nfq.Close(); err != nil && firstErr == nil {
243 firstErr = err
244 }
245 b.nfq = nil
246 }
247 if b.rawSock >= 0 {
248 _ = syscall.Close(b.rawSock)
249 b.rawSock = -1
250 }
251 if err := b.removeRulesLocked(); err != nil && firstErr == nil {
252 firstErr = err
253 }
254 // Drain packet channel so receivers don't block; close signals EOF.
255 close(b.packets)
256 return firstErr
257}
258
259// installRules adds narrowly-scoped iptables rules redirecting only the
260// target flow into our NFQUEUE.

Callers

nothing calls this directly

Implementers 3

fakeBackendcore/engine/engine_test.go
Backendplatform/windows/backend.go
Backendplatform/linux/nfqueue.go

Calls 3

removeRulesLockedMethod · 0.95
closeFunction · 0.85
CloseMethod · 0.65

Tested by

no test coverage detected