summaryrefslogtreecommitdiffhomepage
path: root/pkg/tcpip/transport
diff options
context:
space:
mode:
authorMichael Pratt <mpratt@google.com>2018-08-01 19:56:12 -0700
committerShentubot <shentubot@google.com>2018-08-01 19:57:32 -0700
commit60add78980737a7330100d98bf6a214892dee3c0 (patch)
tree14433da4615d2010a5d34ade91ff94b938c5a9b5 /pkg/tcpip/transport
parentb9e1cf8404ce1263176643dee1a1cc835c9d1448 (diff)
Automated rollback of changelist 207007153
PiperOrigin-RevId: 207037226 Change-Id: I8b5f1a056d4f3eab17846f2e0193bb737ecb5428
Diffstat (limited to 'pkg/tcpip/transport')
-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
18 files changed, 83 insertions, 47 deletions
diff --git a/pkg/tcpip/transport/ping/BUILD b/pkg/tcpip/transport/ping/BUILD
index 117532fea..28e3e1700 100644
--- a/pkg/tcpip/transport/ping/BUILD
+++ b/pkg/tcpip/transport/ping/BUILD
@@ -1,7 +1,19 @@
package(licenses = ["notice"]) # Apache 2.0
load("//tools/go_generics:defs.bzl", "go_template_instance")
-load("//tools/go_stateify:defs.bzl", "go_library")
+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",
+)
go_template_instance(
name = "ping_packet_list",
@@ -20,13 +32,14 @@ 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 a22684de9..f15e44b61 100644
--- a/pkg/tcpip/transport/ping/endpoint.go
+++ b/pkg/tcpip/transport/ping/endpoint.go
@@ -26,7 +26,6 @@ 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 6dcec312e..fb878ad36 100644
--- a/pkg/tcpip/transport/queue/BUILD
+++ b/pkg/tcpip/transport/queue/BUILD
@@ -1,14 +1,27 @@
package(licenses = ["notice"]) # Apache 2.0
-load("//tools/go_stateify:defs.bzl", "go_library")
+load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify")
+
+go_stateify(
+ name = "queue_state",
+ srcs = [
+ "queue.go",
+ ],
+ out = "queue_state.go",
+ package = "queue",
+)
go_library(
name = "queue",
- srcs = ["queue.go"],
+ srcs = [
+ "queue.go",
+ "queue_state.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 eb9ee8a3f..6a17441ae 100644
--- a/pkg/tcpip/transport/queue/queue.go
+++ b/pkg/tcpip/transport/queue/queue.go
@@ -33,8 +33,6 @@ 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 9ebae6cc7..6a7153e4d 100644
--- a/pkg/tcpip/transport/tcp/BUILD
+++ b/pkg/tcpip/transport/tcp/BUILD
@@ -1,7 +1,27 @@
package(licenses = ["notice"]) # Apache 2.0
load("//tools/go_generics:defs.bzl", "go_template_instance")
-load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
+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",
+)
go_template_instance(
name = "tcp_segment_list",
@@ -33,14 +53,15 @@ 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 de1883d84..5b8a1e20f 100644
--- a/pkg/tcpip/transport/tcp/endpoint.go
+++ b/pkg/tcpip/transport/tcp/endpoint.go
@@ -54,8 +54,6 @@ 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.
@@ -71,8 +69,6 @@ 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 92ef9c6f7..b22a00ce1 100644
--- a/pkg/tcpip/transport/tcp/rcv.go
+++ b/pkg/tcpip/transport/tcp/rcv.go
@@ -22,8 +22,6 @@ 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 03ae8d747..60f170a27 100644
--- a/pkg/tcpip/transport/tcp/reno.go
+++ b/pkg/tcpip/transport/tcp/reno.go
@@ -16,8 +16,6 @@ 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 8dccea2ba..40928ba2c 100644
--- a/pkg/tcpip/transport/tcp/segment.go
+++ b/pkg/tcpip/transport/tcp/segment.go
@@ -36,8 +36,6 @@ 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 6a2d7bc0b..2ddcf5f10 100644
--- a/pkg/tcpip/transport/tcp/segment_queue.go
+++ b/pkg/tcpip/transport/tcp/segment_queue.go
@@ -21,8 +21,6 @@ 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 376e81846..e38686e1b 100644
--- a/pkg/tcpip/transport/tcp/snd.go
+++ b/pkg/tcpip/transport/tcp/snd.go
@@ -54,8 +54,6 @@ type congestionControl interface {
}
// sender holds the state necessary to send TCP segments.
-//
-// +stateify savable
type sender struct {
ep *endpoint
@@ -135,8 +133,6 @@ 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 d536839af..33c8867f4 100644
--- a/pkg/tcpip/transport/tcp/snd_state.go
+++ b/pkg/tcpip/transport/tcp/snd_state.go
@@ -18,7 +18,6 @@ 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 1a3a62d3d..790dd55a3 100644
--- a/pkg/tcpip/transport/udp/BUILD
+++ b/pkg/tcpip/transport/udp/BUILD
@@ -1,7 +1,19 @@
package(licenses = ["notice"]) # Apache 2.0
load("//tools/go_generics:defs.bzl", "go_template_instance")
-load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
+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",
+)
go_template_instance(
name = "udp_packet_list",
@@ -21,12 +33,13 @@ 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 03fb76f92..2a32c3a87 100644
--- a/pkg/tcpip/transport/udp/endpoint.go
+++ b/pkg/tcpip/transport/udp/endpoint.go
@@ -25,7 +25,6 @@ import (
"gvisor.googlesource.com/gvisor/pkg/waiter"
)
-// +stateify savable
type udpPacket struct {
udpPacketEntry
senderAddress tcpip.FullAddress
@@ -50,8 +49,6 @@ 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 dae0bd079..676f2cf92 100644
--- a/pkg/tcpip/transport/unix/BUILD
+++ b/pkg/tcpip/transport/unix/BUILD
@@ -1,6 +1,17 @@
package(licenses = ["notice"]) # Apache 2.0
-load("//tools/go_stateify:defs.bzl", "go_library")
+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",
+)
go_library(
name = "unix",
@@ -9,11 +20,14 @@ 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 dd7c03cf1..0e63186b2 100644
--- a/pkg/tcpip/transport/unix/connectioned.go
+++ b/pkg/tcpip/transport/unix/connectioned.go
@@ -85,8 +85,6 @@ 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 2a6ec8b4b..3276ddcd0 100644
--- a/pkg/tcpip/transport/unix/connectionless.go
+++ b/pkg/tcpip/transport/unix/connectionless.go
@@ -25,8 +25,6 @@ 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 8e4af3139..190a1ccdb 100644
--- a/pkg/tcpip/transport/unix/unix.go
+++ b/pkg/tcpip/transport/unix/unix.go
@@ -60,8 +60,6 @@ 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
@@ -237,8 +235,6 @@ type BoundEndpoint interface {
}
// message represents a message passed over a Unix domain socket.
-//
-// +stateify savable
type message struct {
ilist.Entry
@@ -310,8 +306,6 @@ type Receiver interface {
}
// queueReceiver implements Receiver for datagram sockets.
-//
-// +stateify savable
type queueReceiver struct {
readQueue *queue.Queue
}
@@ -375,8 +369,6 @@ func (q *queueReceiver) RecvMaxQueueSize() int64 {
func (*queueReceiver) Release() {}
// streamQueueReceiver implements Receiver for stream sockets.
-//
-// +stateify savable
type streamQueueReceiver struct {
queueReceiver
@@ -587,7 +579,6 @@ 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
@@ -680,8 +671,6 @@ func (*connectedEndpoint) Release() {}
// unix domain socket Endpoint implementations.
//
// Not to be used on its own.
-//
-// +stateify savable
type baseEndpoint struct {
*waiter.Queue