summaryrefslogtreecommitdiffhomepage
path: root/pkg/tcpip
diff options
context:
space:
mode:
authorZhaozhong Ni <nzz@google.com>2018-08-01 15:42:07 -0700
committerShentubot <shentubot@google.com>2018-08-01 15:43:24 -0700
commitb9e1cf8404ce1263176643dee1a1cc835c9d1448 (patch)
tree5382c24abb8c19a50fe714af8bb83e1fff6eaa31 /pkg/tcpip
parent6b87378634e1575cf590b7558f19b40b012849c2 (diff)
stateify: convert all packages to use explicit mode.
PiperOrigin-RevId: 207007153 Change-Id: Ifedf1cc3758dc18be16647a4ece9c840c1c636c9
Diffstat (limited to 'pkg/tcpip')
-rw-r--r--pkg/tcpip/BUILD17
-rw-r--r--pkg/tcpip/buffer/BUILD13
-rw-r--r--pkg/tcpip/buffer/view.go2
-rw-r--r--pkg/tcpip/header/BUILD13
-rw-r--r--pkg/tcpip/header/tcp.go4
-rw-r--r--pkg/tcpip/network/fragmentation/BUILD11
-rw-r--r--pkg/tcpip/seqnum/BUILD17
-rw-r--r--pkg/tcpip/tcpip.go4
-rw-r--r--pkg/tcpip/transport/ping/BUILD17
-rw-r--r--pkg/tcpip/transport/ping/endpoint.go1
-rw-r--r--pkg/tcpip/transport/queue/BUILD17
-rw-r--r--pkg/tcpip/transport/queue/queue.go2
-rw-r--r--pkg/tcpip/transport/tcp/BUILD25
-rw-r--r--pkg/tcpip/transport/tcp/endpoint.go4
-rw-r--r--pkg/tcpip/transport/tcp/rcv.go2
-rw-r--r--pkg/tcpip/transport/tcp/reno.go2
-rw-r--r--pkg/tcpip/transport/tcp/segment.go2
-rw-r--r--pkg/tcpip/transport/tcp/segment_queue.go2
-rw-r--r--pkg/tcpip/transport/tcp/snd.go4
-rw-r--r--pkg/tcpip/transport/tcp/snd_state.go1
-rw-r--r--pkg/tcpip/transport/udp/BUILD17
-rw-r--r--pkg/tcpip/transport/udp/endpoint.go3
-rw-r--r--pkg/tcpip/transport/unix/BUILD16
-rw-r--r--pkg/tcpip/transport/unix/connectioned.go2
-rw-r--r--pkg/tcpip/transport/unix/connectionless.go2
-rw-r--r--pkg/tcpip/transport/unix/unix.go11
26 files changed, 64 insertions, 147 deletions
diff --git a/pkg/tcpip/BUILD b/pkg/tcpip/BUILD
index 391d801d0..5153bd3b4 100644
--- a/pkg/tcpip/BUILD
+++ b/pkg/tcpip/BUILD
@@ -1,26 +1,13 @@
package(licenses = ["notice"]) # Apache 2.0
-load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify", "go_test")
-
-go_stateify(
- name = "tcpip_state",
- srcs = [
- "tcpip.go",
- ],
- out = "tcpip_state.go",
- package = "tcpip",
-)
+load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
go_library(
name = "tcpip",
- srcs = [
- "tcpip.go",
- "tcpip_state.go",
- ],
+ srcs = ["tcpip.go"],
importpath = "gvisor.googlesource.com/gvisor/pkg/tcpip",
visibility = ["//visibility:public"],
deps = [
- "//pkg/state",
"//pkg/tcpip/buffer",
"//pkg/waiter",
],
diff --git a/pkg/tcpip/buffer/BUILD b/pkg/tcpip/buffer/BUILD
index efeb6a448..11a725423 100644
--- a/pkg/tcpip/buffer/BUILD
+++ b/pkg/tcpip/buffer/BUILD
@@ -1,26 +1,15 @@
package(licenses = ["notice"]) # Apache 2.0
-load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify", "go_test")
-
-go_stateify(
- name = "buffer_state",
- srcs = [
- "view.go",
- ],
- out = "buffer_state.go",
- package = "buffer",
-)
+load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
go_library(
name = "buffer",
srcs = [
- "buffer_state.go",
"prependable.go",
"view.go",
],
importpath = "gvisor.googlesource.com/gvisor/pkg/tcpip/buffer",
visibility = ["//visibility:public"],
- deps = ["//pkg/state"],
)
go_test(
diff --git a/pkg/tcpip/buffer/view.go b/pkg/tcpip/buffer/view.go
index a5774a327..bbb4e1d24 100644
--- a/pkg/tcpip/buffer/view.go
+++ b/pkg/tcpip/buffer/view.go
@@ -54,6 +54,8 @@ func (v *View) ToVectorisedView(views [1]View) VectorisedView {
// VectorisedView is a vectorised version of View using non contigous memory.
// It supports all the convenience methods supported by View.
+//
+// +stateify savable
type VectorisedView struct {
views []View
size int
diff --git a/pkg/tcpip/header/BUILD b/pkg/tcpip/header/BUILD
index 3aa2cfb24..8f22ba3a5 100644
--- a/pkg/tcpip/header/BUILD
+++ b/pkg/tcpip/header/BUILD
@@ -1,15 +1,6 @@
package(licenses = ["notice"]) # Apache 2.0
-load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify", "go_test")
-
-go_stateify(
- name = "tcp_header_state",
- srcs = [
- "tcp.go",
- ],
- out = "tcp_header_state.go",
- package = "header",
-)
+load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
go_library(
name = "header",
@@ -25,13 +16,11 @@ go_library(
"ipv6.go",
"ipv6_fragment.go",
"tcp.go",
- "tcp_header_state.go",
"udp.go",
],
importpath = "gvisor.googlesource.com/gvisor/pkg/tcpip/header",
visibility = ["//visibility:public"],
deps = [
- "//pkg/state",
"//pkg/tcpip",
"//pkg/tcpip/seqnum",
],
diff --git a/pkg/tcpip/header/tcp.go b/pkg/tcpip/header/tcp.go
index a95d282b0..6689a6dc5 100644
--- a/pkg/tcpip/header/tcp.go
+++ b/pkg/tcpip/header/tcp.go
@@ -120,6 +120,8 @@ type TCPSynOptions struct {
}
// SACKBlock represents a single contiguous SACK block.
+//
+// +stateify savable
type SACKBlock struct {
// Start indicates the lowest sequence number in the block.
Start seqnum.Value
@@ -131,6 +133,8 @@ type SACKBlock struct {
// TCPOptions are used to parse and cache the TCP segment options for a non
// syn/syn-ack segment.
+//
+// +stateify savable
type TCPOptions struct {
// TS is true if the TimeStamp option is enabled.
TS bool
diff --git a/pkg/tcpip/network/fragmentation/BUILD b/pkg/tcpip/network/fragmentation/BUILD
index ac97ebe43..83b4d253f 100644
--- a/pkg/tcpip/network/fragmentation/BUILD
+++ b/pkg/tcpip/network/fragmentation/BUILD
@@ -1,14 +1,7 @@
package(licenses = ["notice"]) # Apache 2.0
load("//tools/go_generics:defs.bzl", "go_template_instance")
-load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify", "go_test")
-
-go_stateify(
- name = "fragmentation_state",
- srcs = ["reassembler_list.go"],
- out = "fragmentation_state.go",
- package = "fragmentation",
-)
+load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
go_template_instance(
name = "reassembler_list",
@@ -26,7 +19,6 @@ go_library(
srcs = [
"frag_heap.go",
"fragmentation.go",
- "fragmentation_state.go",
"reassembler.go",
"reassembler_list.go",
],
@@ -34,7 +26,6 @@ go_library(
visibility = ["//:sandbox"],
deps = [
"//pkg/log",
- "//pkg/state",
"//pkg/tcpip/buffer",
],
)
diff --git a/pkg/tcpip/seqnum/BUILD b/pkg/tcpip/seqnum/BUILD
index a75869dac..c5c889239 100644
--- a/pkg/tcpip/seqnum/BUILD
+++ b/pkg/tcpip/seqnum/BUILD
@@ -1,25 +1,12 @@
package(licenses = ["notice"]) # Apache 2.0
-load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify")
-
-go_stateify(
- name = "seqnum_state",
- srcs = [
- "seqnum.go",
- ],
- out = "seqnum_state.go",
- package = "seqnum",
-)
+load("//tools/go_stateify:defs.bzl", "go_library")
go_library(
name = "seqnum",
- srcs = [
- "seqnum.go",
- "seqnum_state.go",
- ],
+ srcs = ["seqnum.go"],
importpath = "gvisor.googlesource.com/gvisor/pkg/tcpip/seqnum",
visibility = [
"//visibility:public",
],
- deps = ["//pkg/state"],
)
diff --git a/pkg/tcpip/tcpip.go b/pkg/tcpip/tcpip.go
index eb1e4645d..af0aec85c 100644
--- a/pkg/tcpip/tcpip.go
+++ b/pkg/tcpip/tcpip.go
@@ -213,6 +213,8 @@ const (
// FullAddress represents a full transport node address, as required by the
// Connect() and Bind() methods.
+//
+// +stateify savable
type FullAddress struct {
// NIC is the ID of the NIC this address refers to.
//
@@ -256,6 +258,8 @@ func (s SlicePayload) Size() int {
}
// A ControlMessages contains socket control messages for IP sockets.
+//
+// +stateify savable
type ControlMessages struct {
// HasTimestamp indicates whether Timestamp is valid/set.
HasTimestamp bool
diff --git a/pkg/tcpip/transport/ping/BUILD b/pkg/tcpip/transport/ping/BUILD
index 28e3e1700..117532fea 100644
--- a/pkg/tcpip/transport/ping/BUILD
+++ b/pkg/tcpip/transport/ping/BUILD
@@ -1,19 +1,7 @@
package(licenses = ["notice"]) # Apache 2.0
load("//tools/go_generics:defs.bzl", "go_template_instance")
-load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify")
-
-go_stateify(
- name = "ping_state",
- srcs = [
- "endpoint.go",
- "endpoint_state.go",
- "ping_packet_list.go",
- ],
- out = "ping_state.go",
- imports = ["gvisor.googlesource.com/gvisor/pkg/tcpip/buffer"],
- package = "ping",
-)
+load("//tools/go_stateify:defs.bzl", "go_library")
go_template_instance(
name = "ping_packet_list",
@@ -32,14 +20,13 @@ go_library(
"endpoint.go",
"endpoint_state.go",
"ping_packet_list.go",
- "ping_state.go",
"protocol.go",
],
importpath = "gvisor.googlesource.com/gvisor/pkg/tcpip/transport/ping",
+ imports = ["gvisor.googlesource.com/gvisor/pkg/tcpip/buffer"],
visibility = ["//visibility:public"],
deps = [
"//pkg/sleep",
- "//pkg/state",
"//pkg/tcpip",
"//pkg/tcpip/buffer",
"//pkg/tcpip/header",
diff --git a/pkg/tcpip/transport/ping/endpoint.go b/pkg/tcpip/transport/ping/endpoint.go
index f15e44b61..a22684de9 100644
--- a/pkg/tcpip/transport/ping/endpoint.go
+++ b/pkg/tcpip/transport/ping/endpoint.go
@@ -26,6 +26,7 @@ import (
"gvisor.googlesource.com/gvisor/pkg/waiter"
)
+// +stateify savable
type pingPacket struct {
pingPacketEntry
senderAddress tcpip.FullAddress
diff --git a/pkg/tcpip/transport/queue/BUILD b/pkg/tcpip/transport/queue/BUILD
index fb878ad36..6dcec312e 100644
--- a/pkg/tcpip/transport/queue/BUILD
+++ b/pkg/tcpip/transport/queue/BUILD
@@ -1,27 +1,14 @@
package(licenses = ["notice"]) # Apache 2.0
-load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify")
-
-go_stateify(
- name = "queue_state",
- srcs = [
- "queue.go",
- ],
- out = "queue_state.go",
- package = "queue",
-)
+load("//tools/go_stateify:defs.bzl", "go_library")
go_library(
name = "queue",
- srcs = [
- "queue.go",
- "queue_state.go",
- ],
+ srcs = ["queue.go"],
importpath = "gvisor.googlesource.com/gvisor/pkg/tcpip/transport/queue",
visibility = ["//:sandbox"],
deps = [
"//pkg/ilist",
- "//pkg/state",
"//pkg/tcpip",
"//pkg/waiter",
],
diff --git a/pkg/tcpip/transport/queue/queue.go b/pkg/tcpip/transport/queue/queue.go
index 6a17441ae..eb9ee8a3f 100644
--- a/pkg/tcpip/transport/queue/queue.go
+++ b/pkg/tcpip/transport/queue/queue.go
@@ -33,6 +33,8 @@ type Entry interface {
}
// Queue is a buffer queue.
+//
+// +stateify savable
type Queue struct {
ReaderQueue *waiter.Queue
WriterQueue *waiter.Queue
diff --git a/pkg/tcpip/transport/tcp/BUILD b/pkg/tcpip/transport/tcp/BUILD
index 6a7153e4d..9ebae6cc7 100644
--- a/pkg/tcpip/transport/tcp/BUILD
+++ b/pkg/tcpip/transport/tcp/BUILD
@@ -1,27 +1,7 @@
package(licenses = ["notice"]) # Apache 2.0
load("//tools/go_generics:defs.bzl", "go_template_instance")
-load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify", "go_test")
-
-go_stateify(
- name = "tcp_state",
- srcs = [
- "endpoint.go",
- "endpoint_state.go",
- "rcv.go",
- "reno.go",
- "segment.go",
- "segment_heap.go",
- "segment_queue.go",
- "segment_state.go",
- "snd.go",
- "snd_state.go",
- "tcp_segment_list.go",
- ],
- out = "tcp_state.go",
- imports = ["gvisor.googlesource.com/gvisor/pkg/tcpip/buffer"],
- package = "tcp",
-)
+load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
go_template_instance(
name = "tcp_segment_list",
@@ -53,15 +33,14 @@ go_library(
"snd.go",
"snd_state.go",
"tcp_segment_list.go",
- "tcp_state.go",
"timer.go",
],
importpath = "gvisor.googlesource.com/gvisor/pkg/tcpip/transport/tcp",
+ imports = ["gvisor.googlesource.com/gvisor/pkg/tcpip/buffer"],
visibility = ["//visibility:public"],
deps = [
"//pkg/rand",
"//pkg/sleep",
- "//pkg/state",
"//pkg/tcpip",
"//pkg/tcpip/buffer",
"//pkg/tcpip/header",
diff --git a/pkg/tcpip/transport/tcp/endpoint.go b/pkg/tcpip/transport/tcp/endpoint.go
index 5b8a1e20f..de1883d84 100644
--- a/pkg/tcpip/transport/tcp/endpoint.go
+++ b/pkg/tcpip/transport/tcp/endpoint.go
@@ -54,6 +54,8 @@ const (
)
// SACKInfo holds TCP SACK related information for a given endpoint.
+//
+// +stateify savable
type SACKInfo struct {
// Blocks is the maximum number of SACK blocks we track
// per endpoint.
@@ -69,6 +71,8 @@ type SACKInfo struct {
// have concurrent goroutines make calls into the endpoint, they are properly
// synchronized. The protocol implementation, however, runs in a single
// goroutine.
+//
+// +stateify savable
type endpoint struct {
// workMu is used to arbitrate which goroutine may perform protocol
// work. Only the main protocol goroutine is expected to call Lock() on
diff --git a/pkg/tcpip/transport/tcp/rcv.go b/pkg/tcpip/transport/tcp/rcv.go
index b22a00ce1..92ef9c6f7 100644
--- a/pkg/tcpip/transport/tcp/rcv.go
+++ b/pkg/tcpip/transport/tcp/rcv.go
@@ -22,6 +22,8 @@ import (
// receiver holds the state necessary to receive TCP segments and turn them
// into a stream of bytes.
+//
+// +stateify savable
type receiver struct {
ep *endpoint
diff --git a/pkg/tcpip/transport/tcp/reno.go b/pkg/tcpip/transport/tcp/reno.go
index 60f170a27..03ae8d747 100644
--- a/pkg/tcpip/transport/tcp/reno.go
+++ b/pkg/tcpip/transport/tcp/reno.go
@@ -16,6 +16,8 @@ package tcp
// renoState stores the variables related to TCP New Reno congestion
// control algorithm.
+//
+// +stateify savable
type renoState struct {
s *sender
}
diff --git a/pkg/tcpip/transport/tcp/segment.go b/pkg/tcpip/transport/tcp/segment.go
index 40928ba2c..8dccea2ba 100644
--- a/pkg/tcpip/transport/tcp/segment.go
+++ b/pkg/tcpip/transport/tcp/segment.go
@@ -36,6 +36,8 @@ const (
// segment represents a TCP segment. It holds the payload and parsed TCP segment
// information, and can be added to intrusive lists.
// segment is mostly immutable, the only field allowed to change is viewToDeliver.
+//
+// +stateify savable
type segment struct {
segmentEntry
refCnt int32
diff --git a/pkg/tcpip/transport/tcp/segment_queue.go b/pkg/tcpip/transport/tcp/segment_queue.go
index 2ddcf5f10..6a2d7bc0b 100644
--- a/pkg/tcpip/transport/tcp/segment_queue.go
+++ b/pkg/tcpip/transport/tcp/segment_queue.go
@@ -21,6 +21,8 @@ import (
)
// segmentQueue is a bounded, thread-safe queue of TCP segments.
+//
+// +stateify savable
type segmentQueue struct {
mu sync.Mutex `state:"nosave"`
list segmentList `state:"wait"`
diff --git a/pkg/tcpip/transport/tcp/snd.go b/pkg/tcpip/transport/tcp/snd.go
index e38686e1b..376e81846 100644
--- a/pkg/tcpip/transport/tcp/snd.go
+++ b/pkg/tcpip/transport/tcp/snd.go
@@ -54,6 +54,8 @@ type congestionControl interface {
}
// sender holds the state necessary to send TCP segments.
+//
+// +stateify savable
type sender struct {
ep *endpoint
@@ -133,6 +135,8 @@ type sender struct {
}
// fastRecovery holds information related to fast recovery from a packet loss.
+//
+// +stateify savable
type fastRecovery struct {
// active whether the endpoint is in fast recovery. The following fields
// are only meaningful when active is true.
diff --git a/pkg/tcpip/transport/tcp/snd_state.go b/pkg/tcpip/transport/tcp/snd_state.go
index 33c8867f4..d536839af 100644
--- a/pkg/tcpip/transport/tcp/snd_state.go
+++ b/pkg/tcpip/transport/tcp/snd_state.go
@@ -18,6 +18,7 @@ import (
"time"
)
+// +stateify savable
type unixTime struct {
second int64
nano int64
diff --git a/pkg/tcpip/transport/udp/BUILD b/pkg/tcpip/transport/udp/BUILD
index 790dd55a3..1a3a62d3d 100644
--- a/pkg/tcpip/transport/udp/BUILD
+++ b/pkg/tcpip/transport/udp/BUILD
@@ -1,19 +1,7 @@
package(licenses = ["notice"]) # Apache 2.0
load("//tools/go_generics:defs.bzl", "go_template_instance")
-load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify", "go_test")
-
-go_stateify(
- name = "udp_state",
- srcs = [
- "endpoint.go",
- "endpoint_state.go",
- "udp_packet_list.go",
- ],
- out = "udp_state.go",
- imports = ["gvisor.googlesource.com/gvisor/pkg/tcpip/buffer"],
- package = "udp",
-)
+load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
go_template_instance(
name = "udp_packet_list",
@@ -33,13 +21,12 @@ go_library(
"endpoint_state.go",
"protocol.go",
"udp_packet_list.go",
- "udp_state.go",
],
importpath = "gvisor.googlesource.com/gvisor/pkg/tcpip/transport/udp",
+ imports = ["gvisor.googlesource.com/gvisor/pkg/tcpip/buffer"],
visibility = ["//visibility:public"],
deps = [
"//pkg/sleep",
- "//pkg/state",
"//pkg/tcpip",
"//pkg/tcpip/buffer",
"//pkg/tcpip/header",
diff --git a/pkg/tcpip/transport/udp/endpoint.go b/pkg/tcpip/transport/udp/endpoint.go
index 2a32c3a87..03fb76f92 100644
--- a/pkg/tcpip/transport/udp/endpoint.go
+++ b/pkg/tcpip/transport/udp/endpoint.go
@@ -25,6 +25,7 @@ import (
"gvisor.googlesource.com/gvisor/pkg/waiter"
)
+// +stateify savable
type udpPacket struct {
udpPacketEntry
senderAddress tcpip.FullAddress
@@ -49,6 +50,8 @@ const (
// between users of the endpoint and the protocol implementation; it is legal to
// have concurrent goroutines make calls into the endpoint, they are properly
// synchronized.
+//
+// +stateify savable
type endpoint struct {
// The following fields are initialized at creation time and do not
// change throughout the lifetime of the endpoint.
diff --git a/pkg/tcpip/transport/unix/BUILD b/pkg/tcpip/transport/unix/BUILD
index 676f2cf92..dae0bd079 100644
--- a/pkg/tcpip/transport/unix/BUILD
+++ b/pkg/tcpip/transport/unix/BUILD
@@ -1,17 +1,6 @@
package(licenses = ["notice"]) # Apache 2.0
-load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify")
-
-go_stateify(
- name = "unix_state",
- srcs = [
- "connectioned.go",
- "connectionless.go",
- "unix.go",
- ],
- out = "unix_state.go",
- package = "unix",
-)
+load("//tools/go_stateify:defs.bzl", "go_library")
go_library(
name = "unix",
@@ -20,14 +9,11 @@ go_library(
"connectioned_state.go",
"connectionless.go",
"unix.go",
- "unix_state.go",
],
importpath = "gvisor.googlesource.com/gvisor/pkg/tcpip/transport/unix",
visibility = ["//:sandbox"],
deps = [
"//pkg/ilist",
- "//pkg/log",
- "//pkg/state",
"//pkg/tcpip",
"//pkg/tcpip/buffer",
"//pkg/tcpip/transport/queue",
diff --git a/pkg/tcpip/transport/unix/connectioned.go b/pkg/tcpip/transport/unix/connectioned.go
index 0e63186b2..dd7c03cf1 100644
--- a/pkg/tcpip/transport/unix/connectioned.go
+++ b/pkg/tcpip/transport/unix/connectioned.go
@@ -85,6 +85,8 @@ type ConnectingEndpoint interface {
// path != "" && acceptedChan != nil => bound and listening.
//
// Only one of these will be true at any moment.
+//
+// +stateify savable
type connectionedEndpoint struct {
baseEndpoint
diff --git a/pkg/tcpip/transport/unix/connectionless.go b/pkg/tcpip/transport/unix/connectionless.go
index 3276ddcd0..2a6ec8b4b 100644
--- a/pkg/tcpip/transport/unix/connectionless.go
+++ b/pkg/tcpip/transport/unix/connectionless.go
@@ -25,6 +25,8 @@ import (
//
// Specifically, this means datagram unix sockets not created with
// socketpair(2).
+//
+// +stateify savable
type connectionlessEndpoint struct {
baseEndpoint
}
diff --git a/pkg/tcpip/transport/unix/unix.go b/pkg/tcpip/transport/unix/unix.go
index 190a1ccdb..8e4af3139 100644
--- a/pkg/tcpip/transport/unix/unix.go
+++ b/pkg/tcpip/transport/unix/unix.go
@@ -60,6 +60,8 @@ type CredentialsControlMessage interface {
}
// A ControlMessages represents a collection of socket control messages.
+//
+// +stateify savable
type ControlMessages struct {
// Rights is a control message containing FDs.
Rights RightsControlMessage
@@ -235,6 +237,8 @@ type BoundEndpoint interface {
}
// message represents a message passed over a Unix domain socket.
+//
+// +stateify savable
type message struct {
ilist.Entry
@@ -306,6 +310,8 @@ type Receiver interface {
}
// queueReceiver implements Receiver for datagram sockets.
+//
+// +stateify savable
type queueReceiver struct {
readQueue *queue.Queue
}
@@ -369,6 +375,8 @@ func (q *queueReceiver) RecvMaxQueueSize() int64 {
func (*queueReceiver) Release() {}
// streamQueueReceiver implements Receiver for stream sockets.
+//
+// +stateify savable
type streamQueueReceiver struct {
queueReceiver
@@ -579,6 +587,7 @@ type ConnectedEndpoint interface {
Release()
}
+// +stateify savable
type connectedEndpoint struct {
// endpoint represents the subset of the Endpoint functionality needed by
// the connectedEndpoint. It is implemented by both connectionedEndpoint
@@ -671,6 +680,8 @@ func (*connectedEndpoint) Release() {}
// unix domain socket Endpoint implementations.
//
// Not to be used on its own.
+//
+// +stateify savable
type baseEndpoint struct {
*waiter.Queue