// FreeBSD 10 and beyond have a restructured mbuf
// packet header view.
// See https://svnweb.freebsd.org/base?view=revision&revision=254804.
- if supportsABI(1000000) {
- m := (*ifMsghdr)(unsafe.Pointer(any))
- p.Header.Data.Hwassist = uint32(m.Data.Hwassist)
- p.Header.Data.Epoch = m.Data.Epoch
- p.Header.Data.Lastchange = m.Data.Lastchange
- return &InterfaceMessage{Header: p.Header, Data: b[int(unsafe.Offsetof(p.Header.Data))+int(p.Header.Data.Datalen) : any.Msglen]}
- }
+ m := (*ifMsghdr)(unsafe.Pointer(any))
+ p.Header.Data.Hwassist = uint32(m.Data.Hwassist)
+ p.Header.Data.Epoch = m.Data.Epoch
+ p.Header.Data.Lastchange = m.Data.Lastchange
return &InterfaceMessage{Header: p.Header, Data: b[int(unsafe.Offsetof(p.Header.Data))+int(p.Header.Data.Datalen) : any.Msglen]}
}
package syscall
-import (
- "sync"
- "unsafe"
-)
+import "unsafe"
func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html.
-var (
- osreldateOnce sync.Once
- osreldate uint32
-)
-
-func supportsABI(ver uint32) bool {
- osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") })
- return osreldate >= ver
-}
-
type SockaddrDatalink struct {
Len uint8
Family uint8