gitee.com/ks-custle/core-gm@v0.0.0-20230922171213-b83bdd97b62c/net/route/sys.go (about)

     1  // Copyright 2016 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  
     5  //go:build darwin || dragonfly || freebsd || netbsd || openbsd
     6  // +build darwin dragonfly freebsd netbsd openbsd
     7  
     8  package route
     9  
    10  import "unsafe"
    11  
    12  var (
    13  	nativeEndian binaryByteOrder
    14  	kernelAlign  int
    15  	rtmVersion   byte
    16  	wireFormats  map[int]*wireFormat
    17  )
    18  
    19  func init() {
    20  	i := uint32(1)
    21  	b := (*[4]byte)(unsafe.Pointer(&i))
    22  	if b[0] == 1 {
    23  		nativeEndian = littleEndian
    24  	} else {
    25  		nativeEndian = bigEndian
    26  	}
    27  	// might get overridden in probeRoutingStack
    28  	rtmVersion = sysRTM_VERSION
    29  	kernelAlign, wireFormats = probeRoutingStack()
    30  }
    31  
    32  func roundup(l int) int {
    33  	if l == 0 {
    34  		return kernelAlign
    35  	}
    36  	return (l + kernelAlign - 1) &^ (kernelAlign - 1)
    37  }
    38  
    39  type wireFormat struct {
    40  	extOff  int // offset of header extension
    41  	bodyOff int // offset of message body
    42  	parse   func(RIBType, []byte) (Message, error)
    43  }