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 }