From c88a6719255f5dc8c85b367eaf9569f171e73b56 Mon Sep 17 00:00:00 2001 From: Mikio Hara Date: Tue, 28 Jan 2014 03:18:27 -0800 Subject: [PATCH] net: make it possible to use FilePacketConn with IPConn Fixes #6803. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/57560043 --- src/pkg/net/file_test.go | 6 ++++++ src/pkg/net/file_unix.go | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/pkg/net/file_test.go b/src/pkg/net/file_test.go index acaf1885102..e4615b74fc3 100644 --- a/src/pkg/net/file_test.go +++ b/src/pkg/net/file_test.go @@ -174,6 +174,8 @@ var filePacketConnTests = []struct { {net: "udp6", addr: "[::1]", ipv6: true}, + {net: "ip4:icmp", addr: "127.0.0.1"}, + {net: "unixgram", addr: "@gotest3/net", linux: true}, } @@ -187,6 +189,10 @@ func TestFilePacketConn(t *testing.T) { if skipServerTest(tt.net, "unixgram", tt.addr, tt.ipv6, false, tt.linux) { continue } + if os.Getuid() != 0 && tt.net == "ip4:icmp" { + t.Log("skipping test; must be root") + continue + } testFilePacketConnListen(t, tt.net, tt.addr) switch tt.addr { case "", "0.0.0.0", "[::ffff:0.0.0.0]", "[::]": diff --git a/src/pkg/net/file_unix.go b/src/pkg/net/file_unix.go index 8fe1b0eb035..38ae47f7847 100644 --- a/src/pkg/net/file_unix.go +++ b/src/pkg/net/file_unix.go @@ -129,6 +129,8 @@ func FilePacketConn(f *os.File) (c PacketConn, err error) { switch fd.laddr.(type) { case *UDPAddr: return newUDPConn(fd), nil + case *IPAddr: + return newIPConn(fd), nil case *UnixAddr: return newUnixConn(fd), nil }