mirror of
https://github.com/slackhq/nebula.git
synced 2026-05-16 04:47:38 +02:00
42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
package tio
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/slackhq/nebula/wire"
|
|
)
|
|
|
|
// QueueSet holds one or many Queue objects and helps close them in an orderly way.
|
|
type QueueSet interface {
|
|
io.Closer
|
|
Queues() []Queue
|
|
|
|
// Add takes a tun fd, adds it to the set, and prepares it for use as a Queue.
|
|
Add(fd int) error
|
|
}
|
|
|
|
// Capabilities advertises which kernel offload features a Queue successfully negotiated.
|
|
// Callers consult this to decide which coalescers to wire onto the write path.
|
|
type Capabilities struct {
|
|
//none yet!
|
|
}
|
|
|
|
// Queue is a readable/writable Poll queue. One Queue is driven by a single
|
|
// read goroutine plus a single writer (see Write below).
|
|
type Queue interface {
|
|
io.Closer
|
|
|
|
// Read will read at least 1 packet from the tun (up to len(p))
|
|
// mem will be used to provide the backing for each of p[n].Bytes
|
|
// Returns the number of packets actually read, or error
|
|
Read(p []wire.TunPacket, mem []byte) (int, error)
|
|
|
|
// Write emits a single packet on the plaintext (outside→inside)
|
|
// delivery path.
|
|
Write(p []byte) (int, error)
|
|
|
|
// Capabilities returns the Queue's negotiated offload capabilities,
|
|
// or the zero value when q does not advertise any.
|
|
Capabilities() Capabilities
|
|
}
|