mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-03 07:37:34 -04:00
unix: add some FreeBSD Capsicum support.
Change-Id: Ibb1426ebd18d27ee9f144af0fd8c94b08c06f7d7 Reviewed-on: https://go-review.googlesource.com/47290 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
committed by
Ian Lance Taylor
parent
cd2c276457
commit
7a4fde3fda
@@ -0,0 +1,195 @@
|
|||||||
|
// Copyright 2017 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 freebsd
|
||||||
|
|
||||||
|
package unix
|
||||||
|
|
||||||
|
import (
|
||||||
|
errorspkg "errors"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c
|
||||||
|
|
||||||
|
const (
|
||||||
|
// This is the version of CapRights this package understands. See C implementation for parallels.
|
||||||
|
capRightsGoVersion = CAP_RIGHTS_VERSION_00
|
||||||
|
capArSizeMin = CAP_RIGHTS_VERSION_00 + 2
|
||||||
|
capArSizeMax = capRightsGoVersion + 2
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
bit2idx = []int{
|
||||||
|
-1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1,
|
||||||
|
4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func capidxbit(right uint64) int {
|
||||||
|
return int((right >> 57) & 0x1f)
|
||||||
|
}
|
||||||
|
|
||||||
|
func rightToIndex(right uint64) (int, error) {
|
||||||
|
idx := capidxbit(right)
|
||||||
|
if idx < 0 || idx >= len(bit2idx) {
|
||||||
|
return -2, fmt.Errorf("index for right 0x%x out of range", right)
|
||||||
|
}
|
||||||
|
return bit2idx[idx], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func caprver(right uint64) int {
|
||||||
|
return int(right >> 62)
|
||||||
|
}
|
||||||
|
|
||||||
|
func capver(rights *CapRights) int {
|
||||||
|
return caprver(rights.Rights[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
func caparsize(rights *CapRights) int {
|
||||||
|
return capver(rights) + 2
|
||||||
|
}
|
||||||
|
|
||||||
|
// CapRightsSet sets the permissions in setrights in rights.
|
||||||
|
func CapRightsSet(rights *CapRights, setrights []uint64) error {
|
||||||
|
// This is essentially a copy of cap_rights_vset()
|
||||||
|
if capver(rights) != CAP_RIGHTS_VERSION_00 {
|
||||||
|
return fmt.Errorf("bad rights version %d", capver(rights))
|
||||||
|
}
|
||||||
|
|
||||||
|
n := caparsize(rights)
|
||||||
|
if n < capArSizeMin || n > capArSizeMax {
|
||||||
|
return errorspkg.New("bad rights size")
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, right := range setrights {
|
||||||
|
if caprver(right) != CAP_RIGHTS_VERSION_00 {
|
||||||
|
return errorspkg.New("bad right version")
|
||||||
|
}
|
||||||
|
i, err := rightToIndex(right)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if i >= n {
|
||||||
|
return errorspkg.New("index overflow")
|
||||||
|
}
|
||||||
|
if capidxbit(rights.Rights[i]) != capidxbit(right) {
|
||||||
|
return errorspkg.New("index mismatch")
|
||||||
|
}
|
||||||
|
rights.Rights[i] |= right
|
||||||
|
if capidxbit(rights.Rights[i]) != capidxbit(right) {
|
||||||
|
return errorspkg.New("index mismatch (after assign)")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CapRightsClear clears the permissions in clearrights from rights.
|
||||||
|
func CapRightsClear(rights *CapRights, clearrights []uint64) error {
|
||||||
|
// This is essentially a copy of cap_rights_vclear()
|
||||||
|
if capver(rights) != CAP_RIGHTS_VERSION_00 {
|
||||||
|
return fmt.Errorf("bad rights version %d", capver(rights))
|
||||||
|
}
|
||||||
|
|
||||||
|
n := caparsize(rights)
|
||||||
|
if n < capArSizeMin || n > capArSizeMax {
|
||||||
|
return errorspkg.New("bad rights size")
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, right := range clearrights {
|
||||||
|
if caprver(right) != CAP_RIGHTS_VERSION_00 {
|
||||||
|
return errorspkg.New("bad right version")
|
||||||
|
}
|
||||||
|
i, err := rightToIndex(right)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if i >= n {
|
||||||
|
return errorspkg.New("index overflow")
|
||||||
|
}
|
||||||
|
if capidxbit(rights.Rights[i]) != capidxbit(right) {
|
||||||
|
return errorspkg.New("index mismatch")
|
||||||
|
}
|
||||||
|
rights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF)
|
||||||
|
if capidxbit(rights.Rights[i]) != capidxbit(right) {
|
||||||
|
return errorspkg.New("index mismatch (after assign)")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CapRightsIsSet checks whether all the permissions in setrights are present in rights.
|
||||||
|
func CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) {
|
||||||
|
// This is essentially a copy of cap_rights_is_vset()
|
||||||
|
if capver(rights) != CAP_RIGHTS_VERSION_00 {
|
||||||
|
return false, fmt.Errorf("bad rights version %d", capver(rights))
|
||||||
|
}
|
||||||
|
|
||||||
|
n := caparsize(rights)
|
||||||
|
if n < capArSizeMin || n > capArSizeMax {
|
||||||
|
return false, errorspkg.New("bad rights size")
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, right := range setrights {
|
||||||
|
if caprver(right) != CAP_RIGHTS_VERSION_00 {
|
||||||
|
return false, errorspkg.New("bad right version")
|
||||||
|
}
|
||||||
|
i, err := rightToIndex(right)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
if i >= n {
|
||||||
|
return false, errorspkg.New("index overflow")
|
||||||
|
}
|
||||||
|
if capidxbit(rights.Rights[i]) != capidxbit(right) {
|
||||||
|
return false, errorspkg.New("index mismatch")
|
||||||
|
}
|
||||||
|
if (rights.Rights[i] & right) != right {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func capright(idx uint64, bit uint64) uint64 {
|
||||||
|
return ((1 << (57 + idx)) | bit)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights.
|
||||||
|
// See man cap_rights_init(3) and rights(4).
|
||||||
|
func CapRightsInit(rights []uint64) (*CapRights, error) {
|
||||||
|
var r CapRights
|
||||||
|
r.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0)
|
||||||
|
r.Rights[1] = capright(1, 0)
|
||||||
|
|
||||||
|
err := CapRightsSet(&r, rights)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &r, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights.
|
||||||
|
// The capability rights on fd can never be increased by CapRightsLimit.
|
||||||
|
// See man cap_rights_limit(2) and rights(4).
|
||||||
|
func CapRightsLimit(fd uintptr, rights *CapRights) error {
|
||||||
|
return capRightsLimit(int(fd), rights)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CapRightsGet returns a CapRights structure containing the operations permitted on fd.
|
||||||
|
// See man cap_rights_get(3) and rights(4).
|
||||||
|
func CapRightsGet(fd uintptr) (*CapRights, error) {
|
||||||
|
r, err := CapRightsInit(nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
err = capRightsGet(capRightsGoVersion, int(fd), r)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return r, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
// Copyright 2017 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.
|
||||||
|
|
||||||
|
package unix
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FIXME: unexported function from os
|
||||||
|
// syscallMode returns the syscall-specific mode bits from Go's portable mode bits.
|
||||||
|
func syscallMode(i os.FileMode) (o uint32) {
|
||||||
|
o |= uint32(i.Perm())
|
||||||
|
if i&os.ModeSetuid != 0 {
|
||||||
|
o |= syscall.S_ISUID
|
||||||
|
}
|
||||||
|
if i&os.ModeSetgid != 0 {
|
||||||
|
o |= syscall.S_ISGID
|
||||||
|
}
|
||||||
|
if i&os.ModeSticky != 0 {
|
||||||
|
o |= syscall.S_ISVTX
|
||||||
|
}
|
||||||
|
// No mapping for Go's ModeTemporary (plan9 only).
|
||||||
|
return
|
||||||
|
}
|
||||||
@@ -75,6 +75,7 @@ includes_DragonFly='
|
|||||||
'
|
'
|
||||||
|
|
||||||
includes_FreeBSD='
|
includes_FreeBSD='
|
||||||
|
#include <sys/capability.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/event.h>
|
#include <sys/event.h>
|
||||||
@@ -401,6 +402,7 @@ ccflags="$@"
|
|||||||
$2 ~ /^(BPF|DLT)_/ ||
|
$2 ~ /^(BPF|DLT)_/ ||
|
||||||
$2 ~ /^CLOCK_/ ||
|
$2 ~ /^CLOCK_/ ||
|
||||||
$2 ~ /^CAN_/ ||
|
$2 ~ /^CAN_/ ||
|
||||||
|
$2 ~ /^CAP_/ ||
|
||||||
$2 ~ /^ALG_/ ||
|
$2 ~ /^ALG_/ ||
|
||||||
$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE|IOC_(GET|SET)_ENCRYPTION)/ ||
|
$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE|IOC_(GET|SET)_ENCRYPTION)/ ||
|
||||||
$2 ~ /^GRND_/ ||
|
$2 ~ /^GRND_/ ||
|
||||||
|
|||||||
@@ -40,21 +40,8 @@ while(<>){
|
|||||||
if($name eq 'SYS_SYS_EXIT'){
|
if($name eq 'SYS_SYS_EXIT'){
|
||||||
$name = 'SYS_EXIT';
|
$name = 'SYS_EXIT';
|
||||||
}
|
}
|
||||||
if($name =~ /^SYS_CAP_+/ || $name =~ /^SYS___CAP_+/){
|
|
||||||
next
|
|
||||||
}
|
|
||||||
|
|
||||||
print " $name = $num; // $proto\n";
|
print " $name = $num; // $proto\n";
|
||||||
|
|
||||||
# We keep Capsicum syscall numbers for FreeBSD
|
|
||||||
# 9-STABLE here because we are not sure whether they
|
|
||||||
# are mature and stable.
|
|
||||||
if($num == 513){
|
|
||||||
print " SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); }\n";
|
|
||||||
print " SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \\\n";
|
|
||||||
print " SYS_CAP_ENTER = 516 // { int cap_enter(void); }\n";
|
|
||||||
print " SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }\n";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -357,6 +357,9 @@ func Llistxattr(link string, dest []byte) (sz int, err error) {
|
|||||||
*/
|
*/
|
||||||
//sys Access(path string, mode uint32) (err error)
|
//sys Access(path string, mode uint32) (err error)
|
||||||
//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error)
|
//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error)
|
||||||
|
//sys CapEnter() (err error)
|
||||||
|
//sys capRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET
|
||||||
|
//sys capRightsLimit(fd int, rightsp *CapRights) (err error)
|
||||||
//sys Chdir(path string) (err error)
|
//sys Chdir(path string) (err error)
|
||||||
//sys Chflags(path string, flags int) (err error)
|
//sys Chflags(path string, flags int) (err error)
|
||||||
//sys Chmod(path string, mode uint32) (err error)
|
//sys Chmod(path string, mode uint32) (err error)
|
||||||
@@ -421,6 +424,7 @@ func Llistxattr(link string, dest []byte) (sz int, err error) {
|
|||||||
//sys Munlockall() (err error)
|
//sys Munlockall() (err error)
|
||||||
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
|
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
|
||||||
//sys Open(path string, mode int, perm uint32) (fd int, err error)
|
//sys Open(path string, mode int, perm uint32) (fd int, err error)
|
||||||
|
//sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error)
|
||||||
//sys Pathconf(path string, name int) (val int, err error)
|
//sys Pathconf(path string, name int) (val int, err error)
|
||||||
//sys Pread(fd int, p []byte, offset int64) (n int, err error)
|
//sys Pread(fd int, p []byte, offset int64) (n int, err error)
|
||||||
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
|
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
|
||||||
|
|||||||
@@ -7,6 +7,13 @@
|
|||||||
package unix_test
|
package unix_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path"
|
||||||
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
@@ -18,3 +25,266 @@ func TestSysctlUint64(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: Infrastructure for launching tests in subprocesses stolen from openbsd_test.go - refactor?
|
||||||
|
// testCmd generates a proper command that, when executed, runs the test
|
||||||
|
// corresponding to the given key.
|
||||||
|
|
||||||
|
type testProc struct {
|
||||||
|
fn func() // should always exit instead of returning
|
||||||
|
arg func(t *testing.T) string // generate argument for test
|
||||||
|
cleanup func(arg string) error // for instance, delete coredumps from testing pledge
|
||||||
|
success bool // whether zero-exit means success or failure
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
testProcs = map[string]testProc{}
|
||||||
|
procName = ""
|
||||||
|
procArg = ""
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
optName = "sys-unix-internal-procname"
|
||||||
|
optArg = "sys-unix-internal-arg"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
flag.StringVar(&procName, optName, "", "internal use only")
|
||||||
|
flag.StringVar(&procArg, optArg, "", "internal use only")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func testCmd(procName string, procArg string) (*exec.Cmd, error) {
|
||||||
|
exe, err := filepath.Abs(os.Args[0])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
cmd := exec.Command(exe, "-"+optName+"="+procName, "-"+optArg+"="+procArg)
|
||||||
|
cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr
|
||||||
|
return cmd, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExitsCorrectly is a comprehensive, one-line-of-use wrapper for testing
|
||||||
|
// a testProc with a key.
|
||||||
|
func ExitsCorrectly(t *testing.T, procName string) {
|
||||||
|
s := testProcs[procName]
|
||||||
|
arg := "-"
|
||||||
|
if s.arg != nil {
|
||||||
|
arg = s.arg(t)
|
||||||
|
}
|
||||||
|
c, err := testCmd(procName, arg)
|
||||||
|
defer func(arg string) {
|
||||||
|
if err := s.cleanup(arg); err != nil {
|
||||||
|
t.Fatalf("Failed to run cleanup for %s %s %#v", procName, err, err)
|
||||||
|
}
|
||||||
|
}(arg)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to construct command for %s", procName)
|
||||||
|
}
|
||||||
|
if (c.Run() == nil) != s.success {
|
||||||
|
result := "succeed"
|
||||||
|
if !s.success {
|
||||||
|
result = "fail"
|
||||||
|
}
|
||||||
|
t.Fatalf("Process did not %s when it was supposed to", result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMain(m *testing.M) {
|
||||||
|
flag.Parse()
|
||||||
|
if procName != "" {
|
||||||
|
t := testProcs[procName]
|
||||||
|
t.fn()
|
||||||
|
os.Stderr.WriteString("test function did not exit\n")
|
||||||
|
if t.success {
|
||||||
|
os.Exit(1)
|
||||||
|
} else {
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os.Exit(m.Run())
|
||||||
|
}
|
||||||
|
|
||||||
|
// end of infrastructure
|
||||||
|
|
||||||
|
const testfile = "gocapmodetest"
|
||||||
|
const testfile2 = testfile + "2"
|
||||||
|
|
||||||
|
func CapEnterTest() {
|
||||||
|
_, err := os.OpenFile(path.Join(procArg, testfile), os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("OpenFile: %s", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
err = unix.CapEnter()
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("CapEnter: %s", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = os.OpenFile(path.Join(procArg, testfile2), os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
|
||||||
|
if err == nil {
|
||||||
|
panic("OpenFile works!")
|
||||||
|
}
|
||||||
|
if err.(*os.PathError).Err != unix.ECAPMODE {
|
||||||
|
panic(fmt.Sprintf("OpenFile failed wrong: %s %#v", err, err))
|
||||||
|
}
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeTempDir(t *testing.T) string {
|
||||||
|
d, err := ioutil.TempDir("", "go_openat_test")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("TempDir failed: %s", err)
|
||||||
|
}
|
||||||
|
return d
|
||||||
|
}
|
||||||
|
|
||||||
|
func removeTempDir(arg string) error {
|
||||||
|
err := os.RemoveAll(arg)
|
||||||
|
if err != nil && err.(*os.PathError).Err == unix.ENOENT {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
testProcs["cap_enter"] = testProc{
|
||||||
|
CapEnterTest,
|
||||||
|
makeTempDir,
|
||||||
|
removeTempDir,
|
||||||
|
true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCapEnter(t *testing.T) {
|
||||||
|
ExitsCorrectly(t, "cap_enter")
|
||||||
|
}
|
||||||
|
|
||||||
|
func OpenatTest() {
|
||||||
|
f, err := os.Open(procArg)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = unix.CapEnter()
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("CapEnter: %s", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
fxx, err := unix.Openat(int(f.Fd()), "xx", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
unix.Close(fxx)
|
||||||
|
|
||||||
|
// The right to open BASE/xx is not ambient
|
||||||
|
_, err = os.OpenFile(procArg+"/xx", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
|
||||||
|
if err == nil {
|
||||||
|
panic("OpenFile succeeded")
|
||||||
|
}
|
||||||
|
if err.(*os.PathError).Err != unix.ECAPMODE {
|
||||||
|
panic(fmt.Sprintf("OpenFile failed wrong: %s %#v", err, err))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Can't make a new directory either
|
||||||
|
err = os.Mkdir(procArg+"2", 0777)
|
||||||
|
if err == nil {
|
||||||
|
panic("MKdir succeeded")
|
||||||
|
}
|
||||||
|
if err.(*os.PathError).Err != unix.ECAPMODE {
|
||||||
|
panic(fmt.Sprintf("Mkdir failed wrong: %s %#v", err, err))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove all caps except read and lookup.
|
||||||
|
r, err := unix.CapRightsInit([]uint64{unix.CAP_READ, unix.CAP_LOOKUP})
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("CapRightsInit failed: %s %#v", err, err))
|
||||||
|
}
|
||||||
|
err = unix.CapRightsLimit(f.Fd(), r)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("CapRightsLimit failed: %s %#v", err, err))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check we can get the rights back again
|
||||||
|
r, err = unix.CapRightsGet(f.Fd())
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("CapRightsGet failed: %s %#v", err, err))
|
||||||
|
}
|
||||||
|
b, err := unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_LOOKUP})
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("CapRightsIsSet failed: %s %#v", err, err))
|
||||||
|
}
|
||||||
|
if !b {
|
||||||
|
panic(fmt.Sprintf("Unexpected rights"))
|
||||||
|
}
|
||||||
|
b, err = unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_LOOKUP, unix.CAP_WRITE})
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("CapRightsIsSet failed: %s %#v", err, err))
|
||||||
|
}
|
||||||
|
if b {
|
||||||
|
panic(fmt.Sprintf("Unexpected rights (2)"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Can no longer create a file
|
||||||
|
_, err = unix.Openat(int(f.Fd()), "xx2", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
|
||||||
|
if err == nil {
|
||||||
|
panic("Openat succeeded")
|
||||||
|
}
|
||||||
|
if err != unix.ENOTCAPABLE {
|
||||||
|
panic(fmt.Sprintf("OpenFileAt failed wrong: %s %#v", err, err))
|
||||||
|
}
|
||||||
|
|
||||||
|
// But can read an existing one
|
||||||
|
_, err = unix.Openat(int(f.Fd()), "xx", os.O_RDONLY, 0666)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("Openat failed: %s %#v", err, err))
|
||||||
|
}
|
||||||
|
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
testProcs["openat"] = testProc{
|
||||||
|
OpenatTest,
|
||||||
|
makeTempDir,
|
||||||
|
removeTempDir,
|
||||||
|
true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestOpenat(t *testing.T) {
|
||||||
|
ExitsCorrectly(t, "openat")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCapRightsSetAndClear(t *testing.T) {
|
||||||
|
r, err := unix.CapRightsInit([]uint64{unix.CAP_READ, unix.CAP_WRITE, unix.CAP_PDWAIT})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("CapRightsInit failed: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = unix.CapRightsSet(r, []uint64{unix.CAP_EVENT, unix.CAP_LISTEN})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("CapRightsSet failed: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_WRITE, unix.CAP_PDWAIT, unix.CAP_EVENT, unix.CAP_LISTEN})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("CapRightsIsSet failed: %s", err)
|
||||||
|
}
|
||||||
|
if !b {
|
||||||
|
t.Fatalf("Wrong rights set")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = unix.CapRightsClear(r, []uint64{unix.CAP_READ, unix.CAP_PDWAIT})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("CapRightsClear failed: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err = unix.CapRightsIsSet(r, []uint64{unix.CAP_WRITE, unix.CAP_EVENT, unix.CAP_LISTEN})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("CapRightsIsSet failed: %s", err)
|
||||||
|
}
|
||||||
|
if !b {
|
||||||
|
t.Fatalf("Wrong rights set")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ package unix
|
|||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <sys/capability.h>
|
||||||
#include <sys/event.h>
|
#include <sys/event.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
@@ -130,7 +131,10 @@ struct if_data8 {
|
|||||||
u_long ifi_iqdrops;
|
u_long ifi_iqdrops;
|
||||||
u_long ifi_noproto;
|
u_long ifi_noproto;
|
||||||
u_long ifi_hwassist;
|
u_long ifi_hwassist;
|
||||||
|
// FIXME: these are now unions, so maybe need to change definitions?
|
||||||
|
#undef ifi_epoch
|
||||||
time_t ifi_epoch;
|
time_t ifi_epoch;
|
||||||
|
#undef ifi_lastchange
|
||||||
struct timeval ifi_lastchange;
|
struct timeval ifi_lastchange;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -351,3 +355,7 @@ type BpfZbufHeader C.struct_bpf_zbuf_header
|
|||||||
// Terminal handling
|
// Terminal handling
|
||||||
|
|
||||||
type Termios C.struct_termios
|
type Termios C.struct_termios
|
||||||
|
|
||||||
|
// Capabilities
|
||||||
|
|
||||||
|
type CapRights C.struct_cap_rights
|
||||||
|
|||||||
+179
-220
@@ -1,5 +1,5 @@
|
|||||||
// mkerrors.sh -m64
|
// mkerrors.sh -m64
|
||||||
// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build amd64,freebsd
|
// +build amd64,freebsd
|
||||||
|
|
||||||
@@ -98,6 +98,7 @@ const (
|
|||||||
AF_VENDOR45 = 0x81
|
AF_VENDOR45 = 0x81
|
||||||
AF_VENDOR46 = 0x83
|
AF_VENDOR46 = 0x83
|
||||||
AF_VENDOR47 = 0x85
|
AF_VENDOR47 = 0x85
|
||||||
|
ALTWERASE = 0x200
|
||||||
B0 = 0x0
|
B0 = 0x0
|
||||||
B110 = 0x6e
|
B110 = 0x6e
|
||||||
B115200 = 0x1c200
|
B115200 = 0x1c200
|
||||||
@@ -189,6 +190,7 @@ const (
|
|||||||
BPF_MINBUFSIZE = 0x20
|
BPF_MINBUFSIZE = 0x20
|
||||||
BPF_MINOR_VERSION = 0x1
|
BPF_MINOR_VERSION = 0x1
|
||||||
BPF_MISC = 0x7
|
BPF_MISC = 0x7
|
||||||
|
BPF_MOD = 0x90
|
||||||
BPF_MSH = 0xa0
|
BPF_MSH = 0xa0
|
||||||
BPF_MUL = 0x20
|
BPF_MUL = 0x20
|
||||||
BPF_NEG = 0x80
|
BPF_NEG = 0x80
|
||||||
@@ -222,7 +224,105 @@ const (
|
|||||||
BPF_T_NORMAL = 0x0
|
BPF_T_NORMAL = 0x0
|
||||||
BPF_W = 0x0
|
BPF_W = 0x0
|
||||||
BPF_X = 0x8
|
BPF_X = 0x8
|
||||||
|
BPF_XOR = 0xa0
|
||||||
BRKINT = 0x2
|
BRKINT = 0x2
|
||||||
|
CAP_ACCEPT = 0x200000020000000
|
||||||
|
CAP_ACL_CHECK = 0x400000000010000
|
||||||
|
CAP_ACL_DELETE = 0x400000000020000
|
||||||
|
CAP_ACL_GET = 0x400000000040000
|
||||||
|
CAP_ACL_SET = 0x400000000080000
|
||||||
|
CAP_ALL0 = 0x20007ffffffffff
|
||||||
|
CAP_ALL1 = 0x4000000001fffff
|
||||||
|
CAP_BIND = 0x200000040000000
|
||||||
|
CAP_BINDAT = 0x200008000000400
|
||||||
|
CAP_CHFLAGSAT = 0x200000000001400
|
||||||
|
CAP_CONNECT = 0x200000080000000
|
||||||
|
CAP_CONNECTAT = 0x200010000000400
|
||||||
|
CAP_CREATE = 0x200000000000040
|
||||||
|
CAP_EVENT = 0x400000000000020
|
||||||
|
CAP_EXTATTR_DELETE = 0x400000000001000
|
||||||
|
CAP_EXTATTR_GET = 0x400000000002000
|
||||||
|
CAP_EXTATTR_LIST = 0x400000000004000
|
||||||
|
CAP_EXTATTR_SET = 0x400000000008000
|
||||||
|
CAP_FCHDIR = 0x200000000000800
|
||||||
|
CAP_FCHFLAGS = 0x200000000001000
|
||||||
|
CAP_FCHMOD = 0x200000000002000
|
||||||
|
CAP_FCHMODAT = 0x200000000002400
|
||||||
|
CAP_FCHOWN = 0x200000000004000
|
||||||
|
CAP_FCHOWNAT = 0x200000000004400
|
||||||
|
CAP_FCNTL = 0x200000000008000
|
||||||
|
CAP_FCNTL_ALL = 0x78
|
||||||
|
CAP_FCNTL_GETFL = 0x8
|
||||||
|
CAP_FCNTL_GETOWN = 0x20
|
||||||
|
CAP_FCNTL_SETFL = 0x10
|
||||||
|
CAP_FCNTL_SETOWN = 0x40
|
||||||
|
CAP_FEXECVE = 0x200000000000080
|
||||||
|
CAP_FLOCK = 0x200000000010000
|
||||||
|
CAP_FPATHCONF = 0x200000000020000
|
||||||
|
CAP_FSCK = 0x200000000040000
|
||||||
|
CAP_FSTAT = 0x200000000080000
|
||||||
|
CAP_FSTATAT = 0x200000000080400
|
||||||
|
CAP_FSTATFS = 0x200000000100000
|
||||||
|
CAP_FSYNC = 0x200000000000100
|
||||||
|
CAP_FTRUNCATE = 0x200000000000200
|
||||||
|
CAP_FUTIMES = 0x200000000200000
|
||||||
|
CAP_FUTIMESAT = 0x200000000200400
|
||||||
|
CAP_GETPEERNAME = 0x200000100000000
|
||||||
|
CAP_GETSOCKNAME = 0x200000200000000
|
||||||
|
CAP_GETSOCKOPT = 0x200000400000000
|
||||||
|
CAP_IOCTL = 0x400000000000080
|
||||||
|
CAP_IOCTLS_ALL = 0x7fffffffffffffff
|
||||||
|
CAP_KQUEUE = 0x400000000100040
|
||||||
|
CAP_KQUEUE_CHANGE = 0x400000000100000
|
||||||
|
CAP_KQUEUE_EVENT = 0x400000000000040
|
||||||
|
CAP_LINKAT_SOURCE = 0x200020000000400
|
||||||
|
CAP_LINKAT_TARGET = 0x200000000400400
|
||||||
|
CAP_LISTEN = 0x200000800000000
|
||||||
|
CAP_LOOKUP = 0x200000000000400
|
||||||
|
CAP_MAC_GET = 0x400000000000001
|
||||||
|
CAP_MAC_SET = 0x400000000000002
|
||||||
|
CAP_MKDIRAT = 0x200000000800400
|
||||||
|
CAP_MKFIFOAT = 0x200000001000400
|
||||||
|
CAP_MKNODAT = 0x200000002000400
|
||||||
|
CAP_MMAP = 0x200000000000010
|
||||||
|
CAP_MMAP_R = 0x20000000000001d
|
||||||
|
CAP_MMAP_RW = 0x20000000000001f
|
||||||
|
CAP_MMAP_RWX = 0x20000000000003f
|
||||||
|
CAP_MMAP_RX = 0x20000000000003d
|
||||||
|
CAP_MMAP_W = 0x20000000000001e
|
||||||
|
CAP_MMAP_WX = 0x20000000000003e
|
||||||
|
CAP_MMAP_X = 0x20000000000003c
|
||||||
|
CAP_PDGETPID = 0x400000000000200
|
||||||
|
CAP_PDKILL = 0x400000000000800
|
||||||
|
CAP_PDWAIT = 0x400000000000400
|
||||||
|
CAP_PEELOFF = 0x200001000000000
|
||||||
|
CAP_POLL_EVENT = 0x400000000000020
|
||||||
|
CAP_PREAD = 0x20000000000000d
|
||||||
|
CAP_PWRITE = 0x20000000000000e
|
||||||
|
CAP_READ = 0x200000000000001
|
||||||
|
CAP_RECV = 0x200000000000001
|
||||||
|
CAP_RENAMEAT_SOURCE = 0x200000004000400
|
||||||
|
CAP_RENAMEAT_TARGET = 0x200040000000400
|
||||||
|
CAP_RIGHTS_VERSION = 0x0
|
||||||
|
CAP_RIGHTS_VERSION_00 = 0x0
|
||||||
|
CAP_SEEK = 0x20000000000000c
|
||||||
|
CAP_SEEK_TELL = 0x200000000000004
|
||||||
|
CAP_SEM_GETVALUE = 0x400000000000004
|
||||||
|
CAP_SEM_POST = 0x400000000000008
|
||||||
|
CAP_SEM_WAIT = 0x400000000000010
|
||||||
|
CAP_SEND = 0x200000000000002
|
||||||
|
CAP_SETSOCKOPT = 0x200002000000000
|
||||||
|
CAP_SHUTDOWN = 0x200004000000000
|
||||||
|
CAP_SOCK_CLIENT = 0x200007780000003
|
||||||
|
CAP_SOCK_SERVER = 0x200007f60000003
|
||||||
|
CAP_SYMLINKAT = 0x200000008000400
|
||||||
|
CAP_TTYHOOK = 0x400000000000100
|
||||||
|
CAP_UNLINKAT = 0x200000010000400
|
||||||
|
CAP_UNUSED0_44 = 0x200080000000000
|
||||||
|
CAP_UNUSED0_57 = 0x300000000000000
|
||||||
|
CAP_UNUSED1_22 = 0x400000000200000
|
||||||
|
CAP_UNUSED1_57 = 0x500000000000000
|
||||||
|
CAP_WRITE = 0x200000000000002
|
||||||
CFLUSH = 0xf
|
CFLUSH = 0xf
|
||||||
CLOCAL = 0x8000
|
CLOCAL = 0x8000
|
||||||
CLOCK_MONOTONIC = 0x4
|
CLOCK_MONOTONIC = 0x4
|
||||||
@@ -240,6 +340,7 @@ const (
|
|||||||
CLOCK_UPTIME_PRECISE = 0x7
|
CLOCK_UPTIME_PRECISE = 0x7
|
||||||
CLOCK_VIRTUAL = 0x1
|
CLOCK_VIRTUAL = 0x1
|
||||||
CREAD = 0x800
|
CREAD = 0x800
|
||||||
|
CRTSCTS = 0x30000
|
||||||
CS5 = 0x0
|
CS5 = 0x0
|
||||||
CS6 = 0x100
|
CS6 = 0x100
|
||||||
CS7 = 0x200
|
CS7 = 0x200
|
||||||
@@ -265,8 +366,12 @@ const (
|
|||||||
DLT_AX25 = 0x3
|
DLT_AX25 = 0x3
|
||||||
DLT_AX25_KISS = 0xca
|
DLT_AX25_KISS = 0xca
|
||||||
DLT_BACNET_MS_TP = 0xa5
|
DLT_BACNET_MS_TP = 0xa5
|
||||||
|
DLT_BLUETOOTH_BREDR_BB = 0xff
|
||||||
DLT_BLUETOOTH_HCI_H4 = 0xbb
|
DLT_BLUETOOTH_HCI_H4 = 0xbb
|
||||||
DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
|
DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
|
||||||
|
DLT_BLUETOOTH_LE_LL = 0xfb
|
||||||
|
DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100
|
||||||
|
DLT_BLUETOOTH_LINUX_MONITOR = 0xfe
|
||||||
DLT_CAN20B = 0xbe
|
DLT_CAN20B = 0xbe
|
||||||
DLT_CAN_SOCKETCAN = 0xe3
|
DLT_CAN_SOCKETCAN = 0xe3
|
||||||
DLT_CHAOS = 0x5
|
DLT_CHAOS = 0x5
|
||||||
@@ -282,6 +387,7 @@ const (
|
|||||||
DLT_EN10MB = 0x1
|
DLT_EN10MB = 0x1
|
||||||
DLT_EN3MB = 0x2
|
DLT_EN3MB = 0x2
|
||||||
DLT_ENC = 0x6d
|
DLT_ENC = 0x6d
|
||||||
|
DLT_EPON = 0x103
|
||||||
DLT_ERF = 0xc5
|
DLT_ERF = 0xc5
|
||||||
DLT_ERF_ETH = 0xaf
|
DLT_ERF_ETH = 0xaf
|
||||||
DLT_ERF_POS = 0xb0
|
DLT_ERF_POS = 0xb0
|
||||||
@@ -311,9 +417,11 @@ const (
|
|||||||
DLT_IEEE802_15_4_NONASK_PHY = 0xd7
|
DLT_IEEE802_15_4_NONASK_PHY = 0xd7
|
||||||
DLT_IEEE802_16_MAC_CPS = 0xbc
|
DLT_IEEE802_16_MAC_CPS = 0xbc
|
||||||
DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
|
DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
|
||||||
|
DLT_INFINIBAND = 0xf7
|
||||||
DLT_IPFILTER = 0x74
|
DLT_IPFILTER = 0x74
|
||||||
DLT_IPMB = 0xc7
|
DLT_IPMB = 0xc7
|
||||||
DLT_IPMB_LINUX = 0xd1
|
DLT_IPMB_LINUX = 0xd1
|
||||||
|
DLT_IPMI_HPM_2 = 0x104
|
||||||
DLT_IPNET = 0xe2
|
DLT_IPNET = 0xe2
|
||||||
DLT_IPOIB = 0xf2
|
DLT_IPOIB = 0xf2
|
||||||
DLT_IPV4 = 0xe4
|
DLT_IPV4 = 0xe4
|
||||||
@@ -352,7 +460,7 @@ const (
|
|||||||
DLT_LINUX_SLL = 0x71
|
DLT_LINUX_SLL = 0x71
|
||||||
DLT_LOOP = 0x6c
|
DLT_LOOP = 0x6c
|
||||||
DLT_LTALK = 0x72
|
DLT_LTALK = 0x72
|
||||||
DLT_MATCHING_MAX = 0xf6
|
DLT_MATCHING_MAX = 0x104
|
||||||
DLT_MATCHING_MIN = 0x68
|
DLT_MATCHING_MIN = 0x68
|
||||||
DLT_MFR = 0xb6
|
DLT_MFR = 0xb6
|
||||||
DLT_MOST = 0xd3
|
DLT_MOST = 0xd3
|
||||||
@@ -364,6 +472,7 @@ const (
|
|||||||
DLT_MUX27010 = 0xec
|
DLT_MUX27010 = 0xec
|
||||||
DLT_NETANALYZER = 0xf0
|
DLT_NETANALYZER = 0xf0
|
||||||
DLT_NETANALYZER_TRANSPARENT = 0xf1
|
DLT_NETANALYZER_TRANSPARENT = 0xf1
|
||||||
|
DLT_NETLINK = 0xfd
|
||||||
DLT_NFC_LLCP = 0xf5
|
DLT_NFC_LLCP = 0xf5
|
||||||
DLT_NFLOG = 0xef
|
DLT_NFLOG = 0xef
|
||||||
DLT_NG40 = 0xf4
|
DLT_NG40 = 0xf4
|
||||||
@@ -371,6 +480,7 @@ const (
|
|||||||
DLT_PCI_EXP = 0x7d
|
DLT_PCI_EXP = 0x7d
|
||||||
DLT_PFLOG = 0x75
|
DLT_PFLOG = 0x75
|
||||||
DLT_PFSYNC = 0x79
|
DLT_PFSYNC = 0x79
|
||||||
|
DLT_PKTAP = 0x102
|
||||||
DLT_PPI = 0xc0
|
DLT_PPI = 0xc0
|
||||||
DLT_PPP = 0x9
|
DLT_PPP = 0x9
|
||||||
DLT_PPP_BSDOS = 0x10
|
DLT_PPP_BSDOS = 0x10
|
||||||
@@ -380,11 +490,14 @@ const (
|
|||||||
DLT_PPP_WITH_DIR = 0xcc
|
DLT_PPP_WITH_DIR = 0xcc
|
||||||
DLT_PPP_WITH_DIRECTION = 0xa6
|
DLT_PPP_WITH_DIRECTION = 0xa6
|
||||||
DLT_PRISM_HEADER = 0x77
|
DLT_PRISM_HEADER = 0x77
|
||||||
|
DLT_PROFIBUS_DL = 0x101
|
||||||
DLT_PRONET = 0x4
|
DLT_PRONET = 0x4
|
||||||
DLT_RAIF1 = 0xc6
|
DLT_RAIF1 = 0xc6
|
||||||
DLT_RAW = 0xc
|
DLT_RAW = 0xc
|
||||||
DLT_RIO = 0x7c
|
DLT_RIO = 0x7c
|
||||||
|
DLT_RTAC_SERIAL = 0xfa
|
||||||
DLT_SCCP = 0x8e
|
DLT_SCCP = 0x8e
|
||||||
|
DLT_SCTP = 0xf8
|
||||||
DLT_SITA = 0xc4
|
DLT_SITA = 0xc4
|
||||||
DLT_SLIP = 0x8
|
DLT_SLIP = 0x8
|
||||||
DLT_SLIP_BSDOS = 0xf
|
DLT_SLIP_BSDOS = 0xf
|
||||||
@@ -393,6 +506,7 @@ const (
|
|||||||
DLT_SYMANTEC_FIREWALL = 0x63
|
DLT_SYMANTEC_FIREWALL = 0x63
|
||||||
DLT_TZSP = 0x80
|
DLT_TZSP = 0x80
|
||||||
DLT_USB = 0xba
|
DLT_USB = 0xba
|
||||||
|
DLT_USBPCAP = 0xf9
|
||||||
DLT_USB_LINUX = 0xbd
|
DLT_USB_LINUX = 0xbd
|
||||||
DLT_USB_LINUX_MMAPPED = 0xdc
|
DLT_USB_LINUX_MMAPPED = 0xdc
|
||||||
DLT_USER0 = 0x93
|
DLT_USER0 = 0x93
|
||||||
@@ -412,6 +526,7 @@ const (
|
|||||||
DLT_USER8 = 0x9b
|
DLT_USER8 = 0x9b
|
||||||
DLT_USER9 = 0x9c
|
DLT_USER9 = 0x9c
|
||||||
DLT_WIHART = 0xdf
|
DLT_WIHART = 0xdf
|
||||||
|
DLT_WIRESHARK_UPPER_PDU = 0xfc
|
||||||
DLT_X2E_SERIAL = 0xd5
|
DLT_X2E_SERIAL = 0xd5
|
||||||
DLT_X2E_XORAYA = 0xd6
|
DLT_X2E_XORAYA = 0xd6
|
||||||
DT_BLK = 0x6
|
DT_BLK = 0x6
|
||||||
@@ -434,9 +549,11 @@ const (
|
|||||||
EVFILT_FS = -0x9
|
EVFILT_FS = -0x9
|
||||||
EVFILT_LIO = -0xa
|
EVFILT_LIO = -0xa
|
||||||
EVFILT_PROC = -0x5
|
EVFILT_PROC = -0x5
|
||||||
|
EVFILT_PROCDESC = -0x8
|
||||||
EVFILT_READ = -0x1
|
EVFILT_READ = -0x1
|
||||||
|
EVFILT_SENDFILE = -0xc
|
||||||
EVFILT_SIGNAL = -0x6
|
EVFILT_SIGNAL = -0x6
|
||||||
EVFILT_SYSCOUNT = 0xb
|
EVFILT_SYSCOUNT = 0xc
|
||||||
EVFILT_TIMER = -0x7
|
EVFILT_TIMER = -0x7
|
||||||
EVFILT_USER = -0xb
|
EVFILT_USER = -0xb
|
||||||
EVFILT_VNODE = -0x4
|
EVFILT_VNODE = -0x4
|
||||||
@@ -451,6 +568,8 @@ const (
|
|||||||
EV_EOF = 0x8000
|
EV_EOF = 0x8000
|
||||||
EV_ERROR = 0x4000
|
EV_ERROR = 0x4000
|
||||||
EV_FLAG1 = 0x2000
|
EV_FLAG1 = 0x2000
|
||||||
|
EV_FLAG2 = 0x4000
|
||||||
|
EV_FORCEONESHOT = 0x100
|
||||||
EV_ONESHOT = 0x10
|
EV_ONESHOT = 0x10
|
||||||
EV_RECEIPT = 0x40
|
EV_RECEIPT = 0x40
|
||||||
EV_SYSFLAGS = 0xf000
|
EV_SYSFLAGS = 0xf000
|
||||||
@@ -498,7 +617,7 @@ const (
|
|||||||
IFF_ALLMULTI = 0x200
|
IFF_ALLMULTI = 0x200
|
||||||
IFF_ALTPHYS = 0x4000
|
IFF_ALTPHYS = 0x4000
|
||||||
IFF_BROADCAST = 0x2
|
IFF_BROADCAST = 0x2
|
||||||
IFF_CANTCHANGE = 0x218f72
|
IFF_CANTCHANGE = 0x218f52
|
||||||
IFF_CANTCONFIG = 0x10000
|
IFF_CANTCONFIG = 0x10000
|
||||||
IFF_DEBUG = 0x4
|
IFF_DEBUG = 0x4
|
||||||
IFF_DRV_OACTIVE = 0x400
|
IFF_DRV_OACTIVE = 0x400
|
||||||
@@ -518,217 +637,17 @@ const (
|
|||||||
IFF_RENAMING = 0x400000
|
IFF_RENAMING = 0x400000
|
||||||
IFF_RUNNING = 0x40
|
IFF_RUNNING = 0x40
|
||||||
IFF_SIMPLEX = 0x800
|
IFF_SIMPLEX = 0x800
|
||||||
IFF_SMART = 0x20
|
|
||||||
IFF_STATICARP = 0x80000
|
IFF_STATICARP = 0x80000
|
||||||
IFF_UP = 0x1
|
IFF_UP = 0x1
|
||||||
IFNAMSIZ = 0x10
|
IFNAMSIZ = 0x10
|
||||||
IFT_1822 = 0x2
|
|
||||||
IFT_A12MPPSWITCH = 0x82
|
|
||||||
IFT_AAL2 = 0xbb
|
|
||||||
IFT_AAL5 = 0x31
|
|
||||||
IFT_ADSL = 0x5e
|
|
||||||
IFT_AFLANE8023 = 0x3b
|
|
||||||
IFT_AFLANE8025 = 0x3c
|
|
||||||
IFT_ARAP = 0x58
|
|
||||||
IFT_ARCNET = 0x23
|
|
||||||
IFT_ARCNETPLUS = 0x24
|
|
||||||
IFT_ASYNC = 0x54
|
|
||||||
IFT_ATM = 0x25
|
|
||||||
IFT_ATMDXI = 0x69
|
|
||||||
IFT_ATMFUNI = 0x6a
|
|
||||||
IFT_ATMIMA = 0x6b
|
|
||||||
IFT_ATMLOGICAL = 0x50
|
|
||||||
IFT_ATMRADIO = 0xbd
|
|
||||||
IFT_ATMSUBINTERFACE = 0x86
|
|
||||||
IFT_ATMVCIENDPT = 0xc2
|
|
||||||
IFT_ATMVIRTUAL = 0x95
|
|
||||||
IFT_BGPPOLICYACCOUNTING = 0xa2
|
|
||||||
IFT_BRIDGE = 0xd1
|
IFT_BRIDGE = 0xd1
|
||||||
IFT_BSC = 0x53
|
|
||||||
IFT_CARP = 0xf8
|
IFT_CARP = 0xf8
|
||||||
IFT_CCTEMUL = 0x3d
|
|
||||||
IFT_CEPT = 0x13
|
|
||||||
IFT_CES = 0x85
|
|
||||||
IFT_CHANNEL = 0x46
|
|
||||||
IFT_CNR = 0x55
|
|
||||||
IFT_COFFEE = 0x84
|
|
||||||
IFT_COMPOSITELINK = 0x9b
|
|
||||||
IFT_DCN = 0x8d
|
|
||||||
IFT_DIGITALPOWERLINE = 0x8a
|
|
||||||
IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
|
|
||||||
IFT_DLSW = 0x4a
|
|
||||||
IFT_DOCSCABLEDOWNSTREAM = 0x80
|
|
||||||
IFT_DOCSCABLEMACLAYER = 0x7f
|
|
||||||
IFT_DOCSCABLEUPSTREAM = 0x81
|
|
||||||
IFT_DS0 = 0x51
|
|
||||||
IFT_DS0BUNDLE = 0x52
|
|
||||||
IFT_DS1FDL = 0xaa
|
|
||||||
IFT_DS3 = 0x1e
|
|
||||||
IFT_DTM = 0x8c
|
|
||||||
IFT_DVBASILN = 0xac
|
|
||||||
IFT_DVBASIOUT = 0xad
|
|
||||||
IFT_DVBRCCDOWNSTREAM = 0x93
|
|
||||||
IFT_DVBRCCMACLAYER = 0x92
|
|
||||||
IFT_DVBRCCUPSTREAM = 0x94
|
|
||||||
IFT_ENC = 0xf4
|
|
||||||
IFT_EON = 0x19
|
|
||||||
IFT_EPLRS = 0x57
|
|
||||||
IFT_ESCON = 0x49
|
|
||||||
IFT_ETHER = 0x6
|
|
||||||
IFT_FAITH = 0xf2
|
|
||||||
IFT_FAST = 0x7d
|
|
||||||
IFT_FASTETHER = 0x3e
|
|
||||||
IFT_FASTETHERFX = 0x45
|
|
||||||
IFT_FDDI = 0xf
|
|
||||||
IFT_FIBRECHANNEL = 0x38
|
|
||||||
IFT_FRAMERELAYINTERCONNECT = 0x3a
|
|
||||||
IFT_FRAMERELAYMPI = 0x5c
|
|
||||||
IFT_FRDLCIENDPT = 0xc1
|
|
||||||
IFT_FRELAY = 0x20
|
|
||||||
IFT_FRELAYDCE = 0x2c
|
|
||||||
IFT_FRF16MFRBUNDLE = 0xa3
|
|
||||||
IFT_FRFORWARD = 0x9e
|
|
||||||
IFT_G703AT2MB = 0x43
|
|
||||||
IFT_G703AT64K = 0x42
|
|
||||||
IFT_GIF = 0xf0
|
|
||||||
IFT_GIGABITETHERNET = 0x75
|
|
||||||
IFT_GR303IDT = 0xb2
|
|
||||||
IFT_GR303RDT = 0xb1
|
|
||||||
IFT_H323GATEKEEPER = 0xa4
|
|
||||||
IFT_H323PROXY = 0xa5
|
|
||||||
IFT_HDH1822 = 0x3
|
|
||||||
IFT_HDLC = 0x76
|
|
||||||
IFT_HDSL2 = 0xa8
|
|
||||||
IFT_HIPERLAN2 = 0xb7
|
|
||||||
IFT_HIPPI = 0x2f
|
|
||||||
IFT_HIPPIINTERFACE = 0x39
|
|
||||||
IFT_HOSTPAD = 0x5a
|
|
||||||
IFT_HSSI = 0x2e
|
|
||||||
IFT_HY = 0xe
|
|
||||||
IFT_IBM370PARCHAN = 0x48
|
|
||||||
IFT_IDSL = 0x9a
|
|
||||||
IFT_IEEE1394 = 0x90
|
IFT_IEEE1394 = 0x90
|
||||||
IFT_IEEE80211 = 0x47
|
|
||||||
IFT_IEEE80212 = 0x37
|
|
||||||
IFT_IEEE8023ADLAG = 0xa1
|
|
||||||
IFT_IFGSN = 0x91
|
|
||||||
IFT_IMT = 0xbe
|
|
||||||
IFT_INFINIBAND = 0xc7
|
IFT_INFINIBAND = 0xc7
|
||||||
IFT_INTERLEAVE = 0x7c
|
|
||||||
IFT_IP = 0x7e
|
|
||||||
IFT_IPFORWARD = 0x8e
|
|
||||||
IFT_IPOVERATM = 0x72
|
|
||||||
IFT_IPOVERCDLC = 0x6d
|
|
||||||
IFT_IPOVERCLAW = 0x6e
|
|
||||||
IFT_IPSWITCH = 0x4e
|
|
||||||
IFT_IPXIP = 0xf9
|
|
||||||
IFT_ISDN = 0x3f
|
|
||||||
IFT_ISDNBASIC = 0x14
|
|
||||||
IFT_ISDNPRIMARY = 0x15
|
|
||||||
IFT_ISDNS = 0x4b
|
|
||||||
IFT_ISDNU = 0x4c
|
|
||||||
IFT_ISO88022LLC = 0x29
|
|
||||||
IFT_ISO88023 = 0x7
|
|
||||||
IFT_ISO88024 = 0x8
|
|
||||||
IFT_ISO88025 = 0x9
|
|
||||||
IFT_ISO88025CRFPINT = 0x62
|
|
||||||
IFT_ISO88025DTR = 0x56
|
|
||||||
IFT_ISO88025FIBER = 0x73
|
|
||||||
IFT_ISO88026 = 0xa
|
|
||||||
IFT_ISUP = 0xb3
|
|
||||||
IFT_L2VLAN = 0x87
|
IFT_L2VLAN = 0x87
|
||||||
IFT_L3IPVLAN = 0x88
|
IFT_L3IPVLAN = 0x88
|
||||||
IFT_L3IPXVLAN = 0x89
|
|
||||||
IFT_LAPB = 0x10
|
|
||||||
IFT_LAPD = 0x4d
|
|
||||||
IFT_LAPF = 0x77
|
|
||||||
IFT_LOCALTALK = 0x2a
|
|
||||||
IFT_LOOP = 0x18
|
|
||||||
IFT_MEDIAMAILOVERIP = 0x8b
|
|
||||||
IFT_MFSIGLINK = 0xa7
|
|
||||||
IFT_MIOX25 = 0x26
|
|
||||||
IFT_MODEM = 0x30
|
|
||||||
IFT_MPC = 0x71
|
|
||||||
IFT_MPLS = 0xa6
|
|
||||||
IFT_MPLSTUNNEL = 0x96
|
|
||||||
IFT_MSDSL = 0x8f
|
|
||||||
IFT_MVL = 0xbf
|
|
||||||
IFT_MYRINET = 0x63
|
|
||||||
IFT_NFAS = 0xaf
|
|
||||||
IFT_NSIP = 0x1b
|
|
||||||
IFT_OPTICALCHANNEL = 0xc3
|
|
||||||
IFT_OPTICALTRANSPORT = 0xc4
|
|
||||||
IFT_OTHER = 0x1
|
|
||||||
IFT_P10 = 0xc
|
|
||||||
IFT_P80 = 0xd
|
|
||||||
IFT_PARA = 0x22
|
|
||||||
IFT_PFLOG = 0xf6
|
|
||||||
IFT_PFSYNC = 0xf7
|
|
||||||
IFT_PLC = 0xae
|
|
||||||
IFT_POS = 0xab
|
|
||||||
IFT_PPP = 0x17
|
IFT_PPP = 0x17
|
||||||
IFT_PPPMULTILINKBUNDLE = 0x6c
|
|
||||||
IFT_PROPBWAP2MP = 0xb8
|
|
||||||
IFT_PROPCNLS = 0x59
|
|
||||||
IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
|
|
||||||
IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
|
|
||||||
IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
|
|
||||||
IFT_PROPMUX = 0x36
|
|
||||||
IFT_PROPVIRTUAL = 0x35
|
IFT_PROPVIRTUAL = 0x35
|
||||||
IFT_PROPWIRELESSP2P = 0x9d
|
|
||||||
IFT_PTPSERIAL = 0x16
|
|
||||||
IFT_PVC = 0xf1
|
|
||||||
IFT_QLLC = 0x44
|
|
||||||
IFT_RADIOMAC = 0xbc
|
|
||||||
IFT_RADSL = 0x5f
|
|
||||||
IFT_REACHDSL = 0xc0
|
|
||||||
IFT_RFC1483 = 0x9f
|
|
||||||
IFT_RS232 = 0x21
|
|
||||||
IFT_RSRB = 0x4f
|
|
||||||
IFT_SDLC = 0x11
|
|
||||||
IFT_SDSL = 0x60
|
|
||||||
IFT_SHDSL = 0xa9
|
|
||||||
IFT_SIP = 0x1f
|
|
||||||
IFT_SLIP = 0x1c
|
|
||||||
IFT_SMDSDXI = 0x2b
|
|
||||||
IFT_SMDSICIP = 0x34
|
|
||||||
IFT_SONET = 0x27
|
|
||||||
IFT_SONETOVERHEADCHANNEL = 0xb9
|
|
||||||
IFT_SONETPATH = 0x32
|
|
||||||
IFT_SONETVT = 0x33
|
|
||||||
IFT_SRP = 0x97
|
|
||||||
IFT_SS7SIGLINK = 0x9c
|
|
||||||
IFT_STACKTOSTACK = 0x6f
|
|
||||||
IFT_STARLAN = 0xb
|
|
||||||
IFT_STF = 0xd7
|
|
||||||
IFT_T1 = 0x12
|
|
||||||
IFT_TDLC = 0x74
|
|
||||||
IFT_TERMPAD = 0x5b
|
|
||||||
IFT_TR008 = 0xb0
|
|
||||||
IFT_TRANSPHDLC = 0x7b
|
|
||||||
IFT_TUNNEL = 0x83
|
|
||||||
IFT_ULTRA = 0x1d
|
|
||||||
IFT_USB = 0xa0
|
|
||||||
IFT_V11 = 0x40
|
|
||||||
IFT_V35 = 0x2d
|
|
||||||
IFT_V36 = 0x41
|
|
||||||
IFT_V37 = 0x78
|
|
||||||
IFT_VDSL = 0x61
|
|
||||||
IFT_VIRTUALIPADDRESS = 0x70
|
|
||||||
IFT_VOICEEM = 0x64
|
|
||||||
IFT_VOICEENCAP = 0x67
|
|
||||||
IFT_VOICEFXO = 0x65
|
|
||||||
IFT_VOICEFXS = 0x66
|
|
||||||
IFT_VOICEOVERATM = 0x98
|
|
||||||
IFT_VOICEOVERFRAMERELAY = 0x99
|
|
||||||
IFT_VOICEOVERIP = 0x68
|
|
||||||
IFT_X213 = 0x5d
|
|
||||||
IFT_X25 = 0x5
|
|
||||||
IFT_X25DDN = 0x4
|
|
||||||
IFT_X25HUNTGROUP = 0x7a
|
|
||||||
IFT_X25MLP = 0x79
|
|
||||||
IFT_X25PLE = 0x28
|
|
||||||
IFT_XETHER = 0x1a
|
|
||||||
IGNBRK = 0x1
|
IGNBRK = 0x1
|
||||||
IGNCR = 0x80
|
IGNCR = 0x80
|
||||||
IGNPAR = 0x4
|
IGNPAR = 0x4
|
||||||
@@ -811,7 +730,6 @@ const (
|
|||||||
IPPROTO_LEAF1 = 0x19
|
IPPROTO_LEAF1 = 0x19
|
||||||
IPPROTO_LEAF2 = 0x1a
|
IPPROTO_LEAF2 = 0x1a
|
||||||
IPPROTO_MAX = 0x100
|
IPPROTO_MAX = 0x100
|
||||||
IPPROTO_MAXID = 0x34
|
|
||||||
IPPROTO_MEAS = 0x13
|
IPPROTO_MEAS = 0x13
|
||||||
IPPROTO_MH = 0x87
|
IPPROTO_MH = 0x87
|
||||||
IPPROTO_MHRP = 0x30
|
IPPROTO_MHRP = 0x30
|
||||||
@@ -876,6 +794,7 @@ const (
|
|||||||
IPPROTO_XTP = 0x24
|
IPPROTO_XTP = 0x24
|
||||||
IPV6_AUTOFLOWLABEL = 0x3b
|
IPV6_AUTOFLOWLABEL = 0x3b
|
||||||
IPV6_BINDANY = 0x40
|
IPV6_BINDANY = 0x40
|
||||||
|
IPV6_BINDMULTI = 0x41
|
||||||
IPV6_BINDV6ONLY = 0x1b
|
IPV6_BINDV6ONLY = 0x1b
|
||||||
IPV6_CHECKSUM = 0x1a
|
IPV6_CHECKSUM = 0x1a
|
||||||
IPV6_DEFAULT_MULTICAST_HOPS = 0x1
|
IPV6_DEFAULT_MULTICAST_HOPS = 0x1
|
||||||
@@ -883,9 +802,10 @@ const (
|
|||||||
IPV6_DEFHLIM = 0x40
|
IPV6_DEFHLIM = 0x40
|
||||||
IPV6_DONTFRAG = 0x3e
|
IPV6_DONTFRAG = 0x3e
|
||||||
IPV6_DSTOPTS = 0x32
|
IPV6_DSTOPTS = 0x32
|
||||||
IPV6_FAITH = 0x1d
|
IPV6_FLOWID = 0x43
|
||||||
IPV6_FLOWINFO_MASK = 0xffffff0f
|
IPV6_FLOWINFO_MASK = 0xffffff0f
|
||||||
IPV6_FLOWLABEL_MASK = 0xffff0f00
|
IPV6_FLOWLABEL_MASK = 0xffff0f00
|
||||||
|
IPV6_FLOWTYPE = 0x44
|
||||||
IPV6_FRAGTTL = 0x78
|
IPV6_FRAGTTL = 0x78
|
||||||
IPV6_FW_ADD = 0x1e
|
IPV6_FW_ADD = 0x1e
|
||||||
IPV6_FW_DEL = 0x1f
|
IPV6_FW_DEL = 0x1f
|
||||||
@@ -919,12 +839,16 @@ const (
|
|||||||
IPV6_PORTRANGE_LOW = 0x2
|
IPV6_PORTRANGE_LOW = 0x2
|
||||||
IPV6_PREFER_TEMPADDR = 0x3f
|
IPV6_PREFER_TEMPADDR = 0x3f
|
||||||
IPV6_RECVDSTOPTS = 0x28
|
IPV6_RECVDSTOPTS = 0x28
|
||||||
|
IPV6_RECVFLOWID = 0x46
|
||||||
IPV6_RECVHOPLIMIT = 0x25
|
IPV6_RECVHOPLIMIT = 0x25
|
||||||
IPV6_RECVHOPOPTS = 0x27
|
IPV6_RECVHOPOPTS = 0x27
|
||||||
IPV6_RECVPATHMTU = 0x2b
|
IPV6_RECVPATHMTU = 0x2b
|
||||||
IPV6_RECVPKTINFO = 0x24
|
IPV6_RECVPKTINFO = 0x24
|
||||||
|
IPV6_RECVRSSBUCKETID = 0x47
|
||||||
IPV6_RECVRTHDR = 0x26
|
IPV6_RECVRTHDR = 0x26
|
||||||
IPV6_RECVTCLASS = 0x39
|
IPV6_RECVTCLASS = 0x39
|
||||||
|
IPV6_RSSBUCKETID = 0x45
|
||||||
|
IPV6_RSS_LISTEN_BUCKET = 0x42
|
||||||
IPV6_RTHDR = 0x33
|
IPV6_RTHDR = 0x33
|
||||||
IPV6_RTHDRDSTOPTS = 0x23
|
IPV6_RTHDRDSTOPTS = 0x23
|
||||||
IPV6_RTHDR_LOOSE = 0x0
|
IPV6_RTHDR_LOOSE = 0x0
|
||||||
@@ -940,6 +864,7 @@ const (
|
|||||||
IP_ADD_MEMBERSHIP = 0xc
|
IP_ADD_MEMBERSHIP = 0xc
|
||||||
IP_ADD_SOURCE_MEMBERSHIP = 0x46
|
IP_ADD_SOURCE_MEMBERSHIP = 0x46
|
||||||
IP_BINDANY = 0x18
|
IP_BINDANY = 0x18
|
||||||
|
IP_BINDMULTI = 0x19
|
||||||
IP_BLOCK_SOURCE = 0x48
|
IP_BLOCK_SOURCE = 0x48
|
||||||
IP_DEFAULT_MULTICAST_LOOP = 0x1
|
IP_DEFAULT_MULTICAST_LOOP = 0x1
|
||||||
IP_DEFAULT_MULTICAST_TTL = 0x1
|
IP_DEFAULT_MULTICAST_TTL = 0x1
|
||||||
@@ -952,7 +877,8 @@ const (
|
|||||||
IP_DUMMYNET_DEL = 0x3d
|
IP_DUMMYNET_DEL = 0x3d
|
||||||
IP_DUMMYNET_FLUSH = 0x3e
|
IP_DUMMYNET_FLUSH = 0x3e
|
||||||
IP_DUMMYNET_GET = 0x40
|
IP_DUMMYNET_GET = 0x40
|
||||||
IP_FAITH = 0x16
|
IP_FLOWID = 0x5a
|
||||||
|
IP_FLOWTYPE = 0x5b
|
||||||
IP_FW3 = 0x30
|
IP_FW3 = 0x30
|
||||||
IP_FW_ADD = 0x32
|
IP_FW_ADD = 0x32
|
||||||
IP_FW_DEL = 0x33
|
IP_FW_DEL = 0x33
|
||||||
@@ -994,13 +920,17 @@ const (
|
|||||||
IP_PORTRANGE_HIGH = 0x1
|
IP_PORTRANGE_HIGH = 0x1
|
||||||
IP_PORTRANGE_LOW = 0x2
|
IP_PORTRANGE_LOW = 0x2
|
||||||
IP_RECVDSTADDR = 0x7
|
IP_RECVDSTADDR = 0x7
|
||||||
|
IP_RECVFLOWID = 0x5d
|
||||||
IP_RECVIF = 0x14
|
IP_RECVIF = 0x14
|
||||||
IP_RECVOPTS = 0x5
|
IP_RECVOPTS = 0x5
|
||||||
IP_RECVRETOPTS = 0x6
|
IP_RECVRETOPTS = 0x6
|
||||||
|
IP_RECVRSSBUCKETID = 0x5e
|
||||||
IP_RECVTOS = 0x44
|
IP_RECVTOS = 0x44
|
||||||
IP_RECVTTL = 0x41
|
IP_RECVTTL = 0x41
|
||||||
IP_RETOPTS = 0x8
|
IP_RETOPTS = 0x8
|
||||||
IP_RF = 0x8000
|
IP_RF = 0x8000
|
||||||
|
IP_RSSBUCKETID = 0x5c
|
||||||
|
IP_RSS_LISTEN_BUCKET = 0x1a
|
||||||
IP_RSVP_OFF = 0x10
|
IP_RSVP_OFF = 0x10
|
||||||
IP_RSVP_ON = 0xf
|
IP_RSVP_ON = 0xf
|
||||||
IP_RSVP_VIF_OFF = 0x12
|
IP_RSVP_VIF_OFF = 0x12
|
||||||
@@ -1041,11 +971,11 @@ const (
|
|||||||
MAP_FIXED = 0x10
|
MAP_FIXED = 0x10
|
||||||
MAP_HASSEMAPHORE = 0x200
|
MAP_HASSEMAPHORE = 0x200
|
||||||
MAP_NOCORE = 0x20000
|
MAP_NOCORE = 0x20000
|
||||||
MAP_NORESERVE = 0x40
|
|
||||||
MAP_NOSYNC = 0x800
|
MAP_NOSYNC = 0x800
|
||||||
MAP_PREFAULT_READ = 0x40000
|
MAP_PREFAULT_READ = 0x40000
|
||||||
MAP_PRIVATE = 0x2
|
MAP_PRIVATE = 0x2
|
||||||
MAP_RENAME = 0x20
|
MAP_RESERVED0020 = 0x20
|
||||||
|
MAP_RESERVED0040 = 0x40
|
||||||
MAP_RESERVED0080 = 0x80
|
MAP_RESERVED0080 = 0x80
|
||||||
MAP_RESERVED0100 = 0x100
|
MAP_RESERVED0100 = 0x100
|
||||||
MAP_SHARED = 0x1
|
MAP_SHARED = 0x1
|
||||||
@@ -1066,6 +996,7 @@ const (
|
|||||||
MSG_PEEK = 0x2
|
MSG_PEEK = 0x2
|
||||||
MSG_TRUNC = 0x10
|
MSG_TRUNC = 0x10
|
||||||
MSG_WAITALL = 0x40
|
MSG_WAITALL = 0x40
|
||||||
|
MSG_WAITFORONE = 0x80000
|
||||||
MS_ASYNC = 0x1
|
MS_ASYNC = 0x1
|
||||||
MS_INVALIDATE = 0x2
|
MS_INVALIDATE = 0x2
|
||||||
MS_SYNC = 0x0
|
MS_SYNC = 0x0
|
||||||
@@ -1075,10 +1006,12 @@ const (
|
|||||||
NET_RT_IFLIST = 0x3
|
NET_RT_IFLIST = 0x3
|
||||||
NET_RT_IFLISTL = 0x5
|
NET_RT_IFLISTL = 0x5
|
||||||
NET_RT_IFMALIST = 0x4
|
NET_RT_IFMALIST = 0x4
|
||||||
NET_RT_MAXID = 0x6
|
|
||||||
NOFLSH = 0x80000000
|
NOFLSH = 0x80000000
|
||||||
|
NOKERNINFO = 0x2000000
|
||||||
NOTE_ATTRIB = 0x8
|
NOTE_ATTRIB = 0x8
|
||||||
NOTE_CHILD = 0x4
|
NOTE_CHILD = 0x4
|
||||||
|
NOTE_CLOSE = 0x100
|
||||||
|
NOTE_CLOSE_WRITE = 0x200
|
||||||
NOTE_DELETE = 0x1
|
NOTE_DELETE = 0x1
|
||||||
NOTE_EXEC = 0x20000000
|
NOTE_EXEC = 0x20000000
|
||||||
NOTE_EXIT = 0x80000000
|
NOTE_EXIT = 0x80000000
|
||||||
@@ -1089,13 +1022,16 @@ const (
|
|||||||
NOTE_FFLAGSMASK = 0xffffff
|
NOTE_FFLAGSMASK = 0xffffff
|
||||||
NOTE_FFNOP = 0x0
|
NOTE_FFNOP = 0x0
|
||||||
NOTE_FFOR = 0x80000000
|
NOTE_FFOR = 0x80000000
|
||||||
|
NOTE_FILE_POLL = 0x2
|
||||||
NOTE_FORK = 0x40000000
|
NOTE_FORK = 0x40000000
|
||||||
NOTE_LINK = 0x10
|
NOTE_LINK = 0x10
|
||||||
NOTE_LOWAT = 0x1
|
NOTE_LOWAT = 0x1
|
||||||
NOTE_MSECONDS = 0x2
|
NOTE_MSECONDS = 0x2
|
||||||
NOTE_NSECONDS = 0x8
|
NOTE_NSECONDS = 0x8
|
||||||
|
NOTE_OPEN = 0x80
|
||||||
NOTE_PCTRLMASK = 0xf0000000
|
NOTE_PCTRLMASK = 0xf0000000
|
||||||
NOTE_PDATAMASK = 0xfffff
|
NOTE_PDATAMASK = 0xfffff
|
||||||
|
NOTE_READ = 0x400
|
||||||
NOTE_RENAME = 0x20
|
NOTE_RENAME = 0x20
|
||||||
NOTE_REVOKE = 0x40
|
NOTE_REVOKE = 0x40
|
||||||
NOTE_SECONDS = 0x1
|
NOTE_SECONDS = 0x1
|
||||||
@@ -1110,6 +1046,7 @@ const (
|
|||||||
ONOCR = 0x20
|
ONOCR = 0x20
|
||||||
ONOEOT = 0x8
|
ONOEOT = 0x8
|
||||||
OPOST = 0x1
|
OPOST = 0x1
|
||||||
|
OXTABS = 0x4
|
||||||
O_ACCMODE = 0x3
|
O_ACCMODE = 0x3
|
||||||
O_APPEND = 0x8
|
O_APPEND = 0x8
|
||||||
O_ASYNC = 0x40
|
O_ASYNC = 0x40
|
||||||
@@ -1131,6 +1068,7 @@ const (
|
|||||||
O_SYNC = 0x80
|
O_SYNC = 0x80
|
||||||
O_TRUNC = 0x400
|
O_TRUNC = 0x400
|
||||||
O_TTY_INIT = 0x80000
|
O_TTY_INIT = 0x80000
|
||||||
|
O_VERIFY = 0x200000
|
||||||
O_WRONLY = 0x1
|
O_WRONLY = 0x1
|
||||||
PARENB = 0x1000
|
PARENB = 0x1000
|
||||||
PARMRK = 0x8
|
PARMRK = 0x8
|
||||||
@@ -1148,7 +1086,10 @@ const (
|
|||||||
RLIMIT_CPU = 0x0
|
RLIMIT_CPU = 0x0
|
||||||
RLIMIT_DATA = 0x2
|
RLIMIT_DATA = 0x2
|
||||||
RLIMIT_FSIZE = 0x1
|
RLIMIT_FSIZE = 0x1
|
||||||
|
RLIMIT_MEMLOCK = 0x6
|
||||||
RLIMIT_NOFILE = 0x8
|
RLIMIT_NOFILE = 0x8
|
||||||
|
RLIMIT_NPROC = 0x7
|
||||||
|
RLIMIT_RSS = 0x5
|
||||||
RLIMIT_STACK = 0x3
|
RLIMIT_STACK = 0x3
|
||||||
RLIM_INFINITY = 0x7fffffffffffffff
|
RLIM_INFINITY = 0x7fffffffffffffff
|
||||||
RTAX_AUTHOR = 0x6
|
RTAX_AUTHOR = 0x6
|
||||||
@@ -1172,6 +1113,7 @@ const (
|
|||||||
RTF_BROADCAST = 0x400000
|
RTF_BROADCAST = 0x400000
|
||||||
RTF_DONE = 0x40
|
RTF_DONE = 0x40
|
||||||
RTF_DYNAMIC = 0x10
|
RTF_DYNAMIC = 0x10
|
||||||
|
RTF_FIXEDMTU = 0x80000
|
||||||
RTF_FMASK = 0x1004d808
|
RTF_FMASK = 0x1004d808
|
||||||
RTF_GATEWAY = 0x2
|
RTF_GATEWAY = 0x2
|
||||||
RTF_GWFLAG_COMPAT = 0x80000000
|
RTF_GWFLAG_COMPAT = 0x80000000
|
||||||
@@ -1182,7 +1124,6 @@ const (
|
|||||||
RTF_MODIFIED = 0x20
|
RTF_MODIFIED = 0x20
|
||||||
RTF_MULTICAST = 0x800000
|
RTF_MULTICAST = 0x800000
|
||||||
RTF_PINNED = 0x100000
|
RTF_PINNED = 0x100000
|
||||||
RTF_PRCLONING = 0x10000
|
|
||||||
RTF_PROTO1 = 0x8000
|
RTF_PROTO1 = 0x8000
|
||||||
RTF_PROTO2 = 0x4000
|
RTF_PROTO2 = 0x4000
|
||||||
RTF_PROTO3 = 0x40000
|
RTF_PROTO3 = 0x40000
|
||||||
@@ -1206,8 +1147,6 @@ const (
|
|||||||
RTM_MISS = 0x7
|
RTM_MISS = 0x7
|
||||||
RTM_NEWADDR = 0xc
|
RTM_NEWADDR = 0xc
|
||||||
RTM_NEWMADDR = 0xf
|
RTM_NEWMADDR = 0xf
|
||||||
RTM_OLDADD = 0x9
|
|
||||||
RTM_OLDDEL = 0xa
|
|
||||||
RTM_REDIRECT = 0x6
|
RTM_REDIRECT = 0x6
|
||||||
RTM_RESOLVE = 0xb
|
RTM_RESOLVE = 0xb
|
||||||
RTM_RTTUNIT = 0xf4240
|
RTM_RTTUNIT = 0xf4240
|
||||||
@@ -1222,9 +1161,19 @@ const (
|
|||||||
RTV_SSTHRESH = 0x20
|
RTV_SSTHRESH = 0x20
|
||||||
RTV_WEIGHT = 0x100
|
RTV_WEIGHT = 0x100
|
||||||
RT_ALL_FIBS = -0x1
|
RT_ALL_FIBS = -0x1
|
||||||
|
RT_BLACKHOLE = 0x40
|
||||||
RT_CACHING_CONTEXT = 0x1
|
RT_CACHING_CONTEXT = 0x1
|
||||||
RT_DEFAULT_FIB = 0x0
|
RT_DEFAULT_FIB = 0x0
|
||||||
|
RT_HAS_GW = 0x80
|
||||||
|
RT_HAS_HEADER = 0x10
|
||||||
|
RT_HAS_HEADER_BIT = 0x4
|
||||||
|
RT_L2_ME = 0x4
|
||||||
|
RT_L2_ME_BIT = 0x2
|
||||||
|
RT_LLE_CACHE = 0x100
|
||||||
|
RT_MAY_LOOP = 0x8
|
||||||
|
RT_MAY_LOOP_BIT = 0x3
|
||||||
RT_NORTREF = 0x2
|
RT_NORTREF = 0x2
|
||||||
|
RT_REJECT = 0x20
|
||||||
RUSAGE_CHILDREN = -0x1
|
RUSAGE_CHILDREN = -0x1
|
||||||
RUSAGE_SELF = 0x0
|
RUSAGE_SELF = 0x0
|
||||||
RUSAGE_THREAD = 0x1
|
RUSAGE_THREAD = 0x1
|
||||||
@@ -1236,21 +1185,18 @@ const (
|
|||||||
SHUT_RDWR = 0x2
|
SHUT_RDWR = 0x2
|
||||||
SHUT_WR = 0x1
|
SHUT_WR = 0x1
|
||||||
SIOCADDMULTI = 0x80206931
|
SIOCADDMULTI = 0x80206931
|
||||||
SIOCADDRT = 0x8040720a
|
|
||||||
SIOCAIFADDR = 0x8040691a
|
SIOCAIFADDR = 0x8040691a
|
||||||
SIOCAIFGROUP = 0x80286987
|
SIOCAIFGROUP = 0x80286987
|
||||||
SIOCALIFADDR = 0x8118691b
|
|
||||||
SIOCATMARK = 0x40047307
|
SIOCATMARK = 0x40047307
|
||||||
SIOCDELMULTI = 0x80206932
|
SIOCDELMULTI = 0x80206932
|
||||||
SIOCDELRT = 0x8040720b
|
|
||||||
SIOCDIFADDR = 0x80206919
|
SIOCDIFADDR = 0x80206919
|
||||||
SIOCDIFGROUP = 0x80286989
|
SIOCDIFGROUP = 0x80286989
|
||||||
SIOCDIFPHYADDR = 0x80206949
|
SIOCDIFPHYADDR = 0x80206949
|
||||||
SIOCDLIFADDR = 0x8118691d
|
|
||||||
SIOCGDRVSPEC = 0xc028697b
|
SIOCGDRVSPEC = 0xc028697b
|
||||||
SIOCGETSGCNT = 0xc0207210
|
SIOCGETSGCNT = 0xc0207210
|
||||||
SIOCGETVIFCNT = 0xc028720f
|
SIOCGETVIFCNT = 0xc028720f
|
||||||
SIOCGHIWAT = 0x40047301
|
SIOCGHIWAT = 0x40047301
|
||||||
|
SIOCGI2C = 0xc020693d
|
||||||
SIOCGIFADDR = 0xc0206921
|
SIOCGIFADDR = 0xc0206921
|
||||||
SIOCGIFBRDADDR = 0xc0206923
|
SIOCGIFBRDADDR = 0xc0206923
|
||||||
SIOCGIFCAP = 0xc020691f
|
SIOCGIFCAP = 0xc020691f
|
||||||
@@ -1272,12 +1218,12 @@ const (
|
|||||||
SIOCGIFPHYS = 0xc0206935
|
SIOCGIFPHYS = 0xc0206935
|
||||||
SIOCGIFPSRCADDR = 0xc0206947
|
SIOCGIFPSRCADDR = 0xc0206947
|
||||||
SIOCGIFSTATUS = 0xc331693b
|
SIOCGIFSTATUS = 0xc331693b
|
||||||
SIOCGLIFADDR = 0xc118691c
|
SIOCGIFXMEDIA = 0xc030698b
|
||||||
SIOCGLIFPHYADDR = 0xc118694b
|
|
||||||
SIOCGLOWAT = 0x40047303
|
SIOCGLOWAT = 0x40047303
|
||||||
SIOCGPGRP = 0x40047309
|
SIOCGPGRP = 0x40047309
|
||||||
SIOCGPRIVATE_0 = 0xc0206950
|
SIOCGPRIVATE_0 = 0xc0206950
|
||||||
SIOCGPRIVATE_1 = 0xc0206951
|
SIOCGPRIVATE_1 = 0xc0206951
|
||||||
|
SIOCGTUNFIB = 0xc020695e
|
||||||
SIOCIFCREATE = 0xc020697a
|
SIOCIFCREATE = 0xc020697a
|
||||||
SIOCIFCREATE2 = 0xc020697c
|
SIOCIFCREATE2 = 0xc020697c
|
||||||
SIOCIFDESTROY = 0x80206979
|
SIOCIFDESTROY = 0x80206979
|
||||||
@@ -1303,9 +1249,9 @@ const (
|
|||||||
SIOCSIFPHYS = 0x80206936
|
SIOCSIFPHYS = 0x80206936
|
||||||
SIOCSIFRVNET = 0xc020695b
|
SIOCSIFRVNET = 0xc020695b
|
||||||
SIOCSIFVNET = 0xc020695a
|
SIOCSIFVNET = 0xc020695a
|
||||||
SIOCSLIFPHYADDR = 0x8118694a
|
|
||||||
SIOCSLOWAT = 0x80047302
|
SIOCSLOWAT = 0x80047302
|
||||||
SIOCSPGRP = 0x80047308
|
SIOCSPGRP = 0x80047308
|
||||||
|
SIOCSTUNFIB = 0x8020695f
|
||||||
SOCK_CLOEXEC = 0x10000000
|
SOCK_CLOEXEC = 0x10000000
|
||||||
SOCK_DGRAM = 0x2
|
SOCK_DGRAM = 0x2
|
||||||
SOCK_MAXADDRLEN = 0xff
|
SOCK_MAXADDRLEN = 0xff
|
||||||
@@ -1350,11 +1296,22 @@ const (
|
|||||||
SO_USELOOPBACK = 0x40
|
SO_USELOOPBACK = 0x40
|
||||||
SO_USER_COOKIE = 0x1015
|
SO_USER_COOKIE = 0x1015
|
||||||
SO_VENDOR = 0x80000000
|
SO_VENDOR = 0x80000000
|
||||||
|
TAB0 = 0x0
|
||||||
|
TAB3 = 0x4
|
||||||
|
TABDLY = 0x4
|
||||||
TCIFLUSH = 0x1
|
TCIFLUSH = 0x1
|
||||||
|
TCIOFF = 0x3
|
||||||
TCIOFLUSH = 0x3
|
TCIOFLUSH = 0x3
|
||||||
|
TCION = 0x4
|
||||||
TCOFLUSH = 0x2
|
TCOFLUSH = 0x2
|
||||||
|
TCOOFF = 0x1
|
||||||
|
TCOON = 0x2
|
||||||
TCP_CA_NAME_MAX = 0x10
|
TCP_CA_NAME_MAX = 0x10
|
||||||
|
TCP_CCALGOOPT = 0x41
|
||||||
TCP_CONGESTION = 0x40
|
TCP_CONGESTION = 0x40
|
||||||
|
TCP_FASTOPEN = 0x401
|
||||||
|
TCP_FUNCTION_BLK = 0x2000
|
||||||
|
TCP_FUNCTION_NAME_LEN_MAX = 0x20
|
||||||
TCP_INFO = 0x20
|
TCP_INFO = 0x20
|
||||||
TCP_KEEPCNT = 0x400
|
TCP_KEEPCNT = 0x400
|
||||||
TCP_KEEPIDLE = 0x100
|
TCP_KEEPIDLE = 0x100
|
||||||
@@ -1373,6 +1330,8 @@ const (
|
|||||||
TCP_NODELAY = 0x1
|
TCP_NODELAY = 0x1
|
||||||
TCP_NOOPT = 0x8
|
TCP_NOOPT = 0x8
|
||||||
TCP_NOPUSH = 0x4
|
TCP_NOPUSH = 0x4
|
||||||
|
TCP_PCAP_IN = 0x1000
|
||||||
|
TCP_PCAP_OUT = 0x800
|
||||||
TCP_VENDOR = 0x80000000
|
TCP_VENDOR = 0x80000000
|
||||||
TCSAFLUSH = 0x2
|
TCSAFLUSH = 0x2
|
||||||
TIOCCBRK = 0x2000747a
|
TIOCCBRK = 0x2000747a
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
|
// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
|
||||||
// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build freebsd,amd64
|
// +build freebsd,amd64
|
||||||
|
|
||||||
@@ -303,6 +303,36 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func CapEnter() (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func capRightsGet(version int, fd int, rightsp *CapRights) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func capRightsLimit(fd int, rightsp *CapRights) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Chdir(path string) (err error) {
|
func Chdir(path string) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
@@ -1113,6 +1143,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
|
||||||
|
fd = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Pathconf(path string, name int) (val int, err error) {
|
func Pathconf(path string, name int) (val int, err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// mksysnum_freebsd.pl
|
// mksysnum_freebsd.pl
|
||||||
// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build amd64,freebsd
|
// +build amd64,freebsd
|
||||||
|
|
||||||
@@ -284,10 +284,6 @@ const (
|
|||||||
SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
|
SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
|
||||||
SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
|
SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
|
||||||
SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \
|
SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \
|
||||||
SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); }
|
|
||||||
SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \
|
|
||||||
SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \
|
|
||||||
SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \
|
|
||||||
SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \
|
SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \
|
||||||
SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \
|
SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \
|
||||||
SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
|
SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
|
||||||
@@ -323,8 +319,7 @@ const (
|
|||||||
SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
|
SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
|
||||||
SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
|
SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
|
||||||
SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
|
SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
|
||||||
SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); }
|
SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \
|
||||||
SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \
|
|
||||||
SYS_CAP_ENTER = 516 // { int cap_enter(void); }
|
SYS_CAP_ENTER = 516 // { int cap_enter(void); }
|
||||||
SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
|
SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
|
||||||
SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
|
SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
|
||||||
@@ -341,6 +336,11 @@ const (
|
|||||||
SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \
|
SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \
|
||||||
SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \
|
SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \
|
||||||
SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \
|
SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \
|
||||||
|
SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \
|
||||||
|
SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \
|
||||||
|
SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \
|
||||||
|
SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \
|
||||||
|
SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \
|
||||||
SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \
|
SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \
|
||||||
SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \
|
SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \
|
||||||
SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \
|
SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \
|
||||||
@@ -348,4 +348,6 @@ const (
|
|||||||
SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
|
SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
|
||||||
SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \
|
SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \
|
||||||
SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
|
SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
|
||||||
|
SYS_FUTIMENS = 546 // { int futimens(int fd, \
|
||||||
|
SYS_UTIMENSAT = 547 // { int utimensat(int fd, \
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
// cgo -godefs types_freebsd.go | go run mkpost.go
|
||||||
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build amd64,freebsd
|
// +build amd64,freebsd
|
||||||
// Created by cgo -godefs - DO NOT EDIT
|
|
||||||
// cgo -godefs types_freebsd.go
|
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
@@ -85,7 +86,7 @@ type Stat_t struct {
|
|||||||
Ctimespec Timespec
|
Ctimespec Timespec
|
||||||
Size int64
|
Size int64
|
||||||
Blocks int64
|
Blocks int64
|
||||||
Blksize uint32
|
Blksize int32
|
||||||
Flags uint32
|
Flags uint32
|
||||||
Gen uint32
|
Gen uint32
|
||||||
Lspare int32
|
Lspare int32
|
||||||
@@ -330,10 +331,9 @@ type ifData struct {
|
|||||||
Hdrlen uint8
|
Hdrlen uint8
|
||||||
Link_state uint8
|
Link_state uint8
|
||||||
Vhid uint8
|
Vhid uint8
|
||||||
Baudrate_pf uint8
|
Datalen uint16
|
||||||
Datalen uint8
|
Mtu uint32
|
||||||
Mtu uint64
|
Metric uint32
|
||||||
Metric uint64
|
|
||||||
Baudrate uint64
|
Baudrate uint64
|
||||||
Ipackets uint64
|
Ipackets uint64
|
||||||
Ierrors uint64
|
Ierrors uint64
|
||||||
@@ -345,10 +345,11 @@ type ifData struct {
|
|||||||
Imcasts uint64
|
Imcasts uint64
|
||||||
Omcasts uint64
|
Omcasts uint64
|
||||||
Iqdrops uint64
|
Iqdrops uint64
|
||||||
|
Oqdrops uint64
|
||||||
Noproto uint64
|
Noproto uint64
|
||||||
Hwassist uint64
|
Hwassist uint64
|
||||||
Epoch int64
|
X__ifi_epoch [8]byte
|
||||||
Lastchange Timeval
|
X__ifi_lastchange [16]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type IfData struct {
|
type IfData struct {
|
||||||
@@ -503,3 +504,7 @@ type Termios struct {
|
|||||||
Ispeed uint32
|
Ispeed uint32
|
||||||
Ospeed uint32
|
Ospeed uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type CapRights struct {
|
||||||
|
Rights [2]uint64
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user