Commit 057a25b0 authored by Mikio Hara's avatar Mikio Hara

ipv6: report a destination address on write error

Change-Id: I226484f6edb0c299487b87fc0384e478969debdc
Reviewed-on: https://go-review.googlesource.com/46233
Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
parent a272b72a
...@@ -37,3 +37,21 @@ func netAddrToIP16(a net.Addr) net.IP { ...@@ -37,3 +37,21 @@ func netAddrToIP16(a net.Addr) net.IP {
} }
return nil return nil
} }
func opAddr(a net.Addr) net.Addr {
switch a.(type) {
case *net.TCPAddr:
if a == nil {
return nil
}
case *net.UDPAddr:
if a == nil {
return nil
}
case *net.IPAddr:
if a == nil {
return nil
}
}
return a
}
...@@ -49,7 +49,7 @@ func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (n ...@@ -49,7 +49,7 @@ func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (n
case *net.IPConn: case *net.IPConn:
n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr)) n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr))
default: default:
return 0, &net.OpError{Op: "write", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Err: errInvalidConnType} return 0, &net.OpError{Op: "write", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Addr: opAddr(dst), Err: errInvalidConnType}
} }
return return
} }
...@@ -51,7 +51,7 @@ func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (in ...@@ -51,7 +51,7 @@ func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (in
} }
err := c.SendMsg(&m, 0) err := c.SendMsg(&m, 0)
if err != nil { if err != nil {
err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Addr: opAddr(dst), Err: err}
} }
return m.N, err return m.N, err
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment