summaryrefslogtreecommitdiffhomepage
path: root/pkg/tcpip/sample
diff options
context:
space:
mode:
authorTamir Duberstein <tamird@google.com>2021-01-15 15:47:13 -0800
committergVisor bot <gvisor-bot@google.com>2021-01-15 15:49:15 -0800
commit12d9790833cc2f6a9b197066a5ecbeb434f74164 (patch)
treee9eec8e4c755c33c5a30c1912422b28380ed1f53 /pkg/tcpip/sample
parentf37ace6661dfed8acae7e22ed0eb9ad78bdeab34 (diff)
Remove count argument from tcpip.Endpoint.Read
The same intent can be specified via the io.Writer. PiperOrigin-RevId: 352098747
Diffstat (limited to 'pkg/tcpip/sample')
-rw-r--r--pkg/tcpip/sample/tun_tcp_connect/main.go3
-rw-r--r--pkg/tcpip/sample/tun_tcp_echo/main.go37
2 files changed, 32 insertions, 8 deletions
diff --git a/pkg/tcpip/sample/tun_tcp_connect/main.go b/pkg/tcpip/sample/tun_tcp_connect/main.go
index a7da9dcd9..3b4f900e3 100644
--- a/pkg/tcpip/sample/tun_tcp_connect/main.go
+++ b/pkg/tcpip/sample/tun_tcp_connect/main.go
@@ -44,7 +44,6 @@ import (
"bufio"
"fmt"
"log"
- "math"
"math/rand"
"net"
"os"
@@ -201,7 +200,7 @@ func main() {
// connection from its side.
wq.EventRegister(&waitEntry, waiter.EventIn)
for {
- _, err := ep.Read(os.Stdout, math.MaxUint16, tcpip.ReadOptions{})
+ _, err := ep.Read(os.Stdout, tcpip.ReadOptions{})
if err != nil {
if err == tcpip.ErrClosedForReceive {
break
diff --git a/pkg/tcpip/sample/tun_tcp_echo/main.go b/pkg/tcpip/sample/tun_tcp_echo/main.go
index a80fa0474..3ac562756 100644
--- a/pkg/tcpip/sample/tun_tcp_echo/main.go
+++ b/pkg/tcpip/sample/tun_tcp_echo/main.go
@@ -20,10 +20,9 @@
package main
import (
- "bytes"
"flag"
+ "io"
"log"
- "math"
"math/rand"
"net"
"os"
@@ -46,6 +45,31 @@ import (
var tap = flag.Bool("tap", false, "use tap istead of tun")
var mac = flag.String("mac", "aa:00:01:01:01:01", "mac address to use in tap device")
+type endpointWriter struct {
+ ep tcpip.Endpoint
+}
+
+type tcpipError struct {
+ inner *tcpip.Error
+}
+
+func (e *tcpipError) Error() string {
+ return e.inner.String()
+}
+
+func (e *endpointWriter) Write(p []byte) (int, error) {
+ n, err := e.ep.Write(tcpip.SlicePayload(p), tcpip.WriteOptions{})
+ if err != nil {
+ return int(n), &tcpipError{
+ inner: err,
+ }
+ }
+ if n != int64(len(p)) {
+ return int(n), io.ErrShortWrite
+ }
+ return int(n), nil
+}
+
func echo(wq *waiter.Queue, ep tcpip.Endpoint) {
defer ep.Close()
@@ -55,9 +79,12 @@ func echo(wq *waiter.Queue, ep tcpip.Endpoint) {
wq.EventRegister(&waitEntry, waiter.EventIn)
defer wq.EventUnregister(&waitEntry)
+ w := endpointWriter{
+ ep: ep,
+ }
+
for {
- var buf bytes.Buffer
- _, err := ep.Read(&buf, math.MaxUint16, tcpip.ReadOptions{})
+ _, err := ep.Read(&w, tcpip.ReadOptions{})
if err != nil {
if err == tcpip.ErrWouldBlock {
<-notifyCh
@@ -66,8 +93,6 @@ func echo(wq *waiter.Queue, ep tcpip.Endpoint) {
return
}
-
- ep.Write(tcpip.SlicePayload(buf.Bytes()), tcpip.WriteOptions{})
}
}