Skip to content

Commit

Permalink
add windows conn stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
clinta committed Mar 30, 2018
1 parent ea6d1a9 commit 347c2fa
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 41 deletions.
41 changes: 0 additions & 41 deletions ping/internal/conn/conn_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
package conn

import (
"net"
"time"

"golang.org/x/net/ipv4"
"golang.org/x/net/ipv6"
)
Expand Down Expand Up @@ -34,41 +31,3 @@ func setupV6Conn(c *ipv6.PacketConn) error {
err = c.SetICMPFilter(&f)
return err
}

func readV4(c *ipv4.PacketConn, len int) (
payload []byte,
srcAddr net.Addr,
src, dst net.IP,
rlen, ttl int,
received time.Time,
err error,
) {
payload = make([]byte, len)
var cm *ipv4.ControlMessage
rlen, cm, srcAddr, err = c.ReadFrom(payload)
received = time.Now()
if cm == nil {
return
}
src, dst, ttl = cm.Src, cm.Dst, cm.TTL
return
}

func readV6(c *ipv6.PacketConn, len int) (
payload []byte,
srcAddr net.Addr,
src, dst net.IP,
rlen, ttl int,
received time.Time,
err error,
) {
payload = make([]byte, len)
var cm *ipv6.ControlMessage
rlen, cm, srcAddr, err = c.ReadFrom(payload)
received = time.Now()
if cm == nil {
return
}
src, dst, ttl = cm.Src, cm.Dst, cm.HopLimit
return
}
15 changes: 15 additions & 0 deletions ping/internal/conn/conn_windows.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// see https://github.com/golang/net/blob/master/ipv4/control_windows.go#L14
package conn

import (
"golang.org/x/net/ipv4"
"golang.org/x/net/ipv6"
)

func setupV4Conn(c *ipv4.PacketConn) error {
return nil
}

func setupV6Conn(c *ipv6.PacketConn) error {
return nil
}
57 changes: 57 additions & 0 deletions ping/internal/conn/read.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package conn

import (
"net"
"time"

"golang.org/x/net/ipv4"
"golang.org/x/net/ipv6"
)

func readV4(c *ipv4.PacketConn, len int) (
payload []byte,
srcAddr net.Addr,
src, dst net.IP,
rlen, ttl int,
received time.Time,
err error,
) {
payload = make([]byte, len)
var cm *ipv4.ControlMessage
rlen, cm, srcAddr, err = c.ReadFrom(payload)
received = time.Now()
if cm != nil {
src, dst, ttl = cm.Src, cm.Dst, cm.TTL
}
if src == nil {
src = net.IPv4zero
}
if dst == nil {
dst = net.IPv4zero
}
return
}

func readV6(c *ipv6.PacketConn, len int) (
payload []byte,
srcAddr net.Addr,
src, dst net.IP,
rlen, ttl int,
received time.Time,
err error,
) {
payload = make([]byte, len)
var cm *ipv6.ControlMessage
rlen, cm, srcAddr, err = c.ReadFrom(payload)
received = time.Now()
if cm != nil {
src, dst, ttl = cm.Src, cm.Dst, cm.HopLimit
}
if src == nil {
src = net.IPv6zero
}
if dst == nil {
dst = net.IPv6zero
}
return
}

0 comments on commit 347c2fa

Please sign in to comment.