route_freebsd_32bit.go 866 B

123456789101112131415161718192021222324
  1. // Copyright 2014 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. // +build freebsd,386 freebsd,arm
  5. package unix
  6. import "unsafe"
  7. func (any *anyMessage) parseInterfaceMessage(b []byte) *InterfaceMessage {
  8. p := (*InterfaceMessage)(unsafe.Pointer(any))
  9. // FreeBSD 10 and beyond have a restructured mbuf
  10. // packet header view.
  11. // See http://svnweb.freebsd.org/base?view=revision&revision=254804.
  12. if freebsdVersion >= 1000000 {
  13. m := (*ifMsghdr)(unsafe.Pointer(any))
  14. p.Header.Data.Hwassist = uint32(m.Data.Hwassist)
  15. p.Header.Data.Epoch = m.Data.Epoch
  16. p.Header.Data.Lastchange = m.Data.Lastchange
  17. return &InterfaceMessage{Header: p.Header, Data: b[sizeofIfMsghdr:any.Msglen]}
  18. }
  19. return &InterfaceMessage{Header: p.Header, Data: b[SizeofIfMsghdr:any.Msglen]}
  20. }