]> Cypherpunks repositories - gostls13.git/commitdiff
net: make it possible to use FilePacketConn with IPConn
authorMikio Hara <mikioh.mikioh@gmail.com>
Tue, 28 Jan 2014 11:18:27 +0000 (03:18 -0800)
committerMikio Hara <mikioh.mikioh@gmail.com>
Tue, 28 Jan 2014 11:18:27 +0000 (03:18 -0800)
Fixes #6803.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/57560043

src/pkg/net/file_test.go
src/pkg/net/file_unix.go

index acaf18851021efd7ad7c32c9d3960c44cdef0eb8..e4615b74fc376de976fe9d9e0e95e8348ac5cfb1 100644 (file)
@@ -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]", "[::]":
index 8fe1b0eb035f5b18d9330504c3c8bce76df32279..38ae47f7847d1d3088b8e0d56495f8b0732f079e 100644 (file)
@@ -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
        }