mirror of
https://github.com/golang/net.git
synced 2026-03-31 18:37:08 +09:00
Starting with 1.12, we must use syscall versions of sysctl instead of the raw syscall. An identical CL will go into the vendored copy of this package in the stdlib. Change-Id: I6286ab3e49f82512491afb5bcf349e89ab5645ab Reviewed-on: https://go-review.googlesource.com/c/148597 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
29 lines
713 B
Go
29 lines
713 B
Go
// Copyright 2016 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 dragonfly freebsd netbsd openbsd
|
|
|
|
package route
|
|
|
|
import (
|
|
"syscall"
|
|
"unsafe"
|
|
)
|
|
|
|
var zero uintptr
|
|
|
|
func sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error {
|
|
var p unsafe.Pointer
|
|
if len(mib) > 0 {
|
|
p = unsafe.Pointer(&mib[0])
|
|
} else {
|
|
p = unsafe.Pointer(&zero)
|
|
}
|
|
_, _, errno := syscall.Syscall6(syscall.SYS___SYSCTL, uintptr(p), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), newlen)
|
|
if errno != 0 {
|
|
return error(errno)
|
|
}
|
|
return nil
|
|
}
|