mirror of
https://github.com/status-im/consul.git
synced 2025-01-11 06:16:08 +00:00
e9835610f3
This is in its own separate package so that it will be a separate test binary that runs thus isolating the go runtime from other tests and allowing accurate go routine leak checking. This test would ideally use goleak.VerifyTestMain but that will fail 100% of the time due to some architectural things (blocking queries and net/rpc uncancellability). This test is not comprehensive. We should enable/exercise more features and more cluster configurations. However its a start.
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
// Copyright 2012 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// +build aix darwin dragonfly freebsd netbsd openbsd
|
|
|
|
package ipv4
|
|
|
|
import (
|
|
"net"
|
|
"syscall"
|
|
"unsafe"
|
|
|
|
"golang.org/x/net/internal/iana"
|
|
"golang.org/x/net/internal/socket"
|
|
)
|
|
|
|
func marshalDst(b []byte, cm *ControlMessage) []byte {
|
|
m := socket.ControlMessage(b)
|
|
m.MarshalHeader(iana.ProtocolIP, sysIP_RECVDSTADDR, net.IPv4len)
|
|
return m.Next(net.IPv4len)
|
|
}
|
|
|
|
func parseDst(cm *ControlMessage, b []byte) {
|
|
if len(cm.Dst) < net.IPv4len {
|
|
cm.Dst = make(net.IP, net.IPv4len)
|
|
}
|
|
copy(cm.Dst, b[:net.IPv4len])
|
|
}
|
|
|
|
func marshalInterface(b []byte, cm *ControlMessage) []byte {
|
|
m := socket.ControlMessage(b)
|
|
m.MarshalHeader(iana.ProtocolIP, sysIP_RECVIF, syscall.SizeofSockaddrDatalink)
|
|
return m.Next(syscall.SizeofSockaddrDatalink)
|
|
}
|
|
|
|
func parseInterface(cm *ControlMessage, b []byte) {
|
|
var sadl syscall.SockaddrDatalink
|
|
copy((*[unsafe.Sizeof(sadl)]byte)(unsafe.Pointer(&sadl))[:], b)
|
|
cm.IfIndex = int(sadl.Index)
|
|
}
|