mirror of
https://github.com/aljazceru/kata-containers.git
synced 2026-01-03 06:24:21 +01:00
Merge pull request #1875 from gabibeyer/rootlessLogic
rootless: add rootless to kata
This commit is contained in:
8
Gopkg.lock
generated
8
Gopkg.lock
generated
@@ -571,14 +571,14 @@
|
||||
revision = "ac249472b7de27a9e8990819566d9be95ab5b816"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:51b28ecbdddc7e0260899b64d8cf13343bb8f66b4b00585b46c775509755095a"
|
||||
digest = "1:20e951ad7c44ad80db56404d70d310dee73dafb3828108cf9157a21ce64be480"
|
||||
name = "github.com/vishvananda/netlink"
|
||||
packages = [
|
||||
".",
|
||||
"nl",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "c2a3de3b38bd00f07290c3c5e12b4dbc04ec8666"
|
||||
revision = "c8c507c80ea28385caac72b682dd066e44943913"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:7e1f976c4a3aebfcce0bffc7f0fa16903e9c826f6591e0797a91b5fffa1e2f70"
|
||||
@@ -611,14 +611,14 @@
|
||||
revision = "a8b9294777976932365dabb6640cf1468d95c70f"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:2fd19a8bed3f4ba8e3b26620f114efec5f39c7b02635a89a915b1cbaefeab5ff"
|
||||
digest = "1:8a6926e1c2cd5be0a71125e5e4ac317d76ffc95478f440d151717fb2b23e42c5"
|
||||
name = "golang.org/x/sys"
|
||||
packages = [
|
||||
"unix",
|
||||
"windows",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "1d2aa6dbdea45adaaebb9905d0666e4537563829"
|
||||
revision = "88d2dcc510266da9f7f8c7f34e1940716cab5f5c"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:e33513a825fcd765e97b5de639a2f7547542d1a8245df0cef18e1fd390b778a9"
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/vishvananda/netlink"
|
||||
revision = "c2a3de3b38bd00f07290c3c5e12b4dbc04ec8666"
|
||||
revision = "c8c507c80ea28385caac72b682dd066e44943913"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/vishvananda/netns"
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
[[constraint]]
|
||||
name = "golang.org/x/sys"
|
||||
revision = "1d2aa6dbdea45adaaebb9905d0666e4537563829"
|
||||
revision = "88d2dcc510266da9f7f8c7f34e1940716cab5f5c"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/sirupsen/logrus"
|
||||
|
||||
@@ -18,6 +18,7 @@ import (
|
||||
"syscall"
|
||||
|
||||
"github.com/kata-containers/runtime/pkg/katautils"
|
||||
"github.com/kata-containers/runtime/pkg/rootless"
|
||||
"github.com/kata-containers/runtime/pkg/signals"
|
||||
vc "github.com/kata-containers/runtime/virtcontainers"
|
||||
vf "github.com/kata-containers/runtime/virtcontainers/factory"
|
||||
@@ -241,6 +242,9 @@ func setExternalLoggers(ctx context.Context, logger *logrus.Entry) {
|
||||
|
||||
// Set the katautils package logger
|
||||
katautils.SetLogger(ctx, logger, originalLoggerLevel)
|
||||
|
||||
// Set the rootless package logger
|
||||
rootless.SetLogger(ctx, logger)
|
||||
}
|
||||
|
||||
// beforeSubcommands is the function to perform preliminary checks
|
||||
|
||||
@@ -11,6 +11,9 @@ import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/kata-containers/runtime/pkg/rootless"
|
||||
)
|
||||
|
||||
const ctrsMappingDirMode = os.FileMode(0750)
|
||||
@@ -22,6 +25,11 @@ func SetCtrsMapTreePath(path string) {
|
||||
ctrsMapTreePath = path
|
||||
}
|
||||
|
||||
// doUpdatePath returns whether a ctrsMapTreePath needs to be updated with a rootless prefix
|
||||
func doUpdatePath() bool {
|
||||
return rootless.IsRootless() && !strings.HasPrefix(ctrsMapTreePath, rootless.GetRootlessDir())
|
||||
}
|
||||
|
||||
// FetchContainerIDMapping This function assumes it should find only one file inside the container
|
||||
// ID directory. If there are several files, we could not determine which
|
||||
// file name corresponds to the sandbox ID associated, and this would throw
|
||||
@@ -31,6 +39,10 @@ func FetchContainerIDMapping(containerID string) (string, error) {
|
||||
return "", fmt.Errorf("Missing container ID")
|
||||
}
|
||||
|
||||
if doUpdatePath() {
|
||||
SetCtrsMapTreePath(filepath.Join(rootless.GetRootlessDir(), ctrsMapTreePath))
|
||||
}
|
||||
|
||||
dirPath := filepath.Join(ctrsMapTreePath, containerID)
|
||||
|
||||
files, err := ioutil.ReadDir(dirPath)
|
||||
@@ -62,6 +74,9 @@ func AddContainerIDMapping(ctx context.Context, containerID, sandboxID string) e
|
||||
return fmt.Errorf("Missing sandbox ID")
|
||||
}
|
||||
|
||||
if doUpdatePath() {
|
||||
SetCtrsMapTreePath(filepath.Join(rootless.GetRootlessDir(), ctrsMapTreePath))
|
||||
}
|
||||
parentPath := filepath.Join(ctrsMapTreePath, containerID)
|
||||
|
||||
if err := os.RemoveAll(parentPath); err != nil {
|
||||
@@ -86,6 +101,9 @@ func DelContainerIDMapping(ctx context.Context, containerID string) error {
|
||||
return fmt.Errorf("Missing container ID")
|
||||
}
|
||||
|
||||
if doUpdatePath() {
|
||||
SetCtrsMapTreePath(filepath.Join(rootless.GetRootlessDir(), ctrsMapTreePath))
|
||||
}
|
||||
path := filepath.Join(ctrsMapTreePath, containerID)
|
||||
|
||||
return os.RemoveAll(path)
|
||||
|
||||
123
pkg/rootless/rootless.go
Normal file
123
pkg/rootless/rootless.go
Normal file
@@ -0,0 +1,123 @@
|
||||
// Copyright (c) 2019 Intel Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
package rootless
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"context"
|
||||
"io"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
var (
|
||||
// initRootless states whether the isRootless variable
|
||||
// has been set yet
|
||||
initRootless bool
|
||||
|
||||
// isRootless states whether execution is rootless or not
|
||||
isRootless bool
|
||||
|
||||
// lock for the initRootless and isRootless variables
|
||||
rLock sync.Mutex
|
||||
|
||||
// XDG_RUNTIME_DIR defines the base directory relative to
|
||||
// which user-specific non-essential runtime files are stored.
|
||||
rootlessDir = os.Getenv("XDG_RUNTIME_DIR")
|
||||
|
||||
// uidMapPath defines the location of the uid_map file to
|
||||
// determine whether a user is root or not
|
||||
uidMapPath = "/proc/self/uid_map"
|
||||
|
||||
rootlessLog = logrus.WithFields(logrus.Fields{
|
||||
"source": "rootless",
|
||||
})
|
||||
)
|
||||
|
||||
// SetLogger sets up a logger for the rootless pkg
|
||||
func SetLogger(ctx context.Context, logger *logrus.Entry) {
|
||||
fields := rootlessLog.Data
|
||||
rootlessLog = logger.WithFields(fields)
|
||||
}
|
||||
|
||||
// setRootless reads a uid_map file, compares the UID of the
|
||||
// user inside the container vs on the host. If the host UID
|
||||
// is not root, but the container ID is, it can be determined
|
||||
// the user is running rootlessly.
|
||||
func setRootless() error {
|
||||
initRootless = true
|
||||
file, err := os.Open(uidMapPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
buf := bufio.NewReader(file)
|
||||
for {
|
||||
line, _, err := buf.ReadLine()
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
if line == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
var parseError = errors.Errorf("Failed to parse uid map file %s", uidMapPath)
|
||||
// if the container id (id[0]) is 0 (root inside the container)
|
||||
// has a mapping to the host id (id[1]) that is not root, then
|
||||
// it can be determined that the host user is running rootless
|
||||
ids := strings.Fields(string(line))
|
||||
// do some sanity checks
|
||||
if len(ids) != 3 {
|
||||
return parseError
|
||||
}
|
||||
userNSUid, err := strconv.ParseUint(ids[0], 10, 0)
|
||||
if err != nil {
|
||||
return parseError
|
||||
}
|
||||
hostUID, err := strconv.ParseUint(ids[1], 10, 0)
|
||||
if err != nil {
|
||||
return parseError
|
||||
}
|
||||
rangeUID, err := strconv.ParseUint(ids[1], 10, 0)
|
||||
if err != nil || rangeUID == 0 {
|
||||
return parseError
|
||||
}
|
||||
|
||||
if userNSUid == 0 && hostUID != 0 {
|
||||
rootlessLog.Info("Running as rootless")
|
||||
isRootless = true
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// IsRootless states whether kata is being ran with root or not
|
||||
func IsRootless() bool {
|
||||
rLock.Lock()
|
||||
if !initRootless {
|
||||
err := setRootless()
|
||||
if err != nil {
|
||||
rootlessLog.WithError(err).Error("Unable to determine if running rootless")
|
||||
}
|
||||
}
|
||||
rLock.Unlock()
|
||||
return isRootless
|
||||
}
|
||||
|
||||
// GetRootlessDir returns the path to the location for rootless
|
||||
// container and sandbox storage
|
||||
func GetRootlessDir() string {
|
||||
return rootlessDir
|
||||
}
|
||||
167
pkg/rootless/rootless_test.go
Normal file
167
pkg/rootless/rootless_test.go
Normal file
@@ -0,0 +1,167 @@
|
||||
// Copyright (c) 2019 Intel Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
package rootless
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
type uidMapping struct {
|
||||
userNSUID int
|
||||
hostUID int
|
||||
rangeUID int
|
||||
}
|
||||
|
||||
type testScenario struct {
|
||||
isRootless bool
|
||||
uidMap []uidMapping
|
||||
}
|
||||
|
||||
var uidMapPathStore = uidMapPath
|
||||
|
||||
func createTestUIDMapFile(input string) error {
|
||||
f, err := os.Create(uidMapPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
_, err = f.WriteString(input)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func uidMapString(userNSUID, hostUID, rangeUID int) string {
|
||||
return fmt.Sprintf("\t%d\t%d\t%d", userNSUID, hostUID, rangeUID)
|
||||
}
|
||||
|
||||
func testWithUIDMapContent(content string, expectedRootless bool, t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
// Create a test-specific message that is added to each assert
|
||||
// call. It will be displayed if any assert test fails.
|
||||
msg := fmt.Sprintf("isRootless[%t]: %s", expectedRootless, content)
|
||||
|
||||
tmpDir, err := ioutil.TempDir("", "")
|
||||
assert.NoError(err)
|
||||
|
||||
uidMapPath = filepath.Join(tmpDir, "testUIDMapFile")
|
||||
defer func() {
|
||||
uidMapPath = uidMapPathStore
|
||||
os.RemoveAll(uidMapPath)
|
||||
os.RemoveAll(tmpDir)
|
||||
isRootless = false
|
||||
initRootless = false
|
||||
}()
|
||||
|
||||
err = createTestUIDMapFile(content)
|
||||
assert.NoError(err, msg)
|
||||
|
||||
// make call to IsRootless, this should also call
|
||||
// SetRootless
|
||||
assert.Equal(expectedRootless, IsRootless(), msg)
|
||||
}
|
||||
|
||||
func TestIsRootless(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
// by default isRootless should be set to false initially
|
||||
assert.False(isRootless)
|
||||
|
||||
allScenarios := []testScenario{
|
||||
//"User NS UID is not root UID"
|
||||
{
|
||||
isRootless: false,
|
||||
uidMap: []uidMapping{
|
||||
{1, 0, 1},
|
||||
{1, 0, 1000},
|
||||
|
||||
{1, 1000, 1},
|
||||
{1, 1000, 1000},
|
||||
|
||||
{1000, 1000, 1},
|
||||
{1000, 1000, 1000},
|
||||
|
||||
{1000, 1000, 5555},
|
||||
},
|
||||
},
|
||||
|
||||
//"Host NS UID is root UID"
|
||||
{
|
||||
isRootless: false,
|
||||
uidMap: []uidMapping{
|
||||
{0, 0, 1},
|
||||
{0, 0, 1000},
|
||||
|
||||
{1, 0, 1},
|
||||
{1, 0, 1000},
|
||||
|
||||
{1000, 0, 0},
|
||||
{1000, 0, 1},
|
||||
{1000, 0, 1000},
|
||||
},
|
||||
},
|
||||
|
||||
//"UID range is zero"
|
||||
{
|
||||
isRootless: false,
|
||||
uidMap: []uidMapping{
|
||||
{0, 0, 0},
|
||||
{1, 0, 0},
|
||||
{1, 1000, 0},
|
||||
{1000, 1000, 0},
|
||||
},
|
||||
},
|
||||
|
||||
//"Negative UIDs"
|
||||
{
|
||||
isRootless: false,
|
||||
uidMap: []uidMapping{
|
||||
{-1, 0, 0},
|
||||
{-1, 0, 1},
|
||||
{-1, 0, 1000},
|
||||
|
||||
{0, -1, 0},
|
||||
{0, -1, 1},
|
||||
{0, -1, 1000},
|
||||
|
||||
{1000, 1000, -1},
|
||||
{1000, 1000, -1},
|
||||
{1000, 1000, -1000},
|
||||
},
|
||||
},
|
||||
|
||||
//"User NS UID is root UID, host UID is not root UID"
|
||||
{
|
||||
isRootless: true,
|
||||
uidMap: []uidMapping{
|
||||
{0, 1, 1},
|
||||
{0, 1000, 1},
|
||||
{0, 1000, 5555},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// Run the tests
|
||||
for _, scenario := range allScenarios {
|
||||
for _, uidMap := range scenario.uidMap {
|
||||
mapping := uidMapString(uidMap.userNSUID, uidMap.hostUID, uidMap.rangeUID)
|
||||
testWithUIDMapContent(mapping, scenario.isRootless, t)
|
||||
}
|
||||
}
|
||||
|
||||
testWithUIDMapContent("", false, t)
|
||||
|
||||
testWithUIDMapContent("This is not a mapping", false, t)
|
||||
}
|
||||
98
vendor/github.com/vishvananda/netlink/addr_linux.go
generated
vendored
98
vendor/github.com/vishvananda/netlink/addr_linux.go
generated
vendored
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
||||
"github.com/vishvananda/netlink/nl"
|
||||
"github.com/vishvananda/netns"
|
||||
@@ -64,7 +65,11 @@ func (h *Handle) addrHandle(link Link, addr *Addr, req *nl.NetlinkRequest) error
|
||||
msg := nl.NewIfAddrmsg(family)
|
||||
msg.Index = uint32(base.Index)
|
||||
msg.Scope = uint8(addr.Scope)
|
||||
prefixlen, masklen := addr.Mask.Size()
|
||||
mask := addr.Mask
|
||||
if addr.Peer != nil {
|
||||
mask = addr.Peer.Mask
|
||||
}
|
||||
prefixlen, masklen := mask.Size()
|
||||
msg.Prefixlen = uint8(prefixlen)
|
||||
req.AddData(msg)
|
||||
|
||||
@@ -102,18 +107,31 @@ func (h *Handle) addrHandle(link Link, addr *Addr, req *nl.NetlinkRequest) error
|
||||
}
|
||||
}
|
||||
|
||||
if addr.Broadcast == nil {
|
||||
calcBroadcast := make(net.IP, masklen/8)
|
||||
for i := range localAddrData {
|
||||
calcBroadcast[i] = localAddrData[i] | ^addr.Mask[i]
|
||||
if family == FAMILY_V4 {
|
||||
if addr.Broadcast == nil {
|
||||
calcBroadcast := make(net.IP, masklen/8)
|
||||
for i := range localAddrData {
|
||||
calcBroadcast[i] = localAddrData[i] | ^mask[i]
|
||||
}
|
||||
addr.Broadcast = calcBroadcast
|
||||
}
|
||||
addr.Broadcast = calcBroadcast
|
||||
}
|
||||
req.AddData(nl.NewRtAttr(unix.IFA_BROADCAST, addr.Broadcast))
|
||||
req.AddData(nl.NewRtAttr(unix.IFA_BROADCAST, addr.Broadcast))
|
||||
|
||||
if addr.Label != "" {
|
||||
labelData := nl.NewRtAttr(unix.IFA_LABEL, nl.ZeroTerminated(addr.Label))
|
||||
req.AddData(labelData)
|
||||
if addr.Label != "" {
|
||||
labelData := nl.NewRtAttr(unix.IFA_LABEL, nl.ZeroTerminated(addr.Label))
|
||||
req.AddData(labelData)
|
||||
}
|
||||
}
|
||||
|
||||
// 0 is the default value for these attributes. However, 0 means "expired", while the least-surprising default
|
||||
// value should be "forever". To compensate for that, only add the attributes if at least one of the values is
|
||||
// non-zero, which means the caller has explicitly set them
|
||||
if addr.ValidLft > 0 || addr.PreferedLft > 0 {
|
||||
cachedata := nl.IfaCacheInfo{
|
||||
IfaValid: uint32(addr.ValidLft),
|
||||
IfaPrefered: uint32(addr.PreferedLft),
|
||||
}
|
||||
req.AddData(nl.NewRtAttr(unix.IFA_CACHEINFO, cachedata.Serialize()))
|
||||
}
|
||||
|
||||
_, err := req.Execute(unix.NETLINK_ROUTE, 0)
|
||||
@@ -192,13 +210,17 @@ func parseAddr(m []byte) (addr Addr, family, index int, err error) {
|
||||
IP: attr.Value,
|
||||
Mask: net.CIDRMask(int(msg.Prefixlen), 8*len(attr.Value)),
|
||||
}
|
||||
addr.Peer = dst
|
||||
case unix.IFA_LOCAL:
|
||||
// iproute2 manual:
|
||||
// If a peer address is specified, the local address
|
||||
// cannot have a prefix length. The network prefix is
|
||||
// associated with the peer rather than with the local
|
||||
// address.
|
||||
n := 8 * len(attr.Value)
|
||||
local = &net.IPNet{
|
||||
IP: attr.Value,
|
||||
Mask: net.CIDRMask(int(msg.Prefixlen), 8*len(attr.Value)),
|
||||
Mask: net.CIDRMask(n, n),
|
||||
}
|
||||
addr.IPNet = local
|
||||
case unix.IFA_BROADCAST:
|
||||
addr.Broadcast = attr.Value
|
||||
case unix.IFA_LABEL:
|
||||
@@ -212,12 +234,24 @@ func parseAddr(m []byte) (addr Addr, family, index int, err error) {
|
||||
}
|
||||
}
|
||||
|
||||
// IFA_LOCAL should be there but if not, fall back to IFA_ADDRESS
|
||||
// libnl addr.c comment:
|
||||
// IPv6 sends the local address as IFA_ADDRESS with no
|
||||
// IFA_LOCAL, IPv4 sends both IFA_LOCAL and IFA_ADDRESS
|
||||
// with IFA_ADDRESS being the peer address if they differ
|
||||
//
|
||||
// But obviously, as there are IPv6 PtP addresses, too,
|
||||
// IFA_LOCAL should also be handled for IPv6.
|
||||
if local != nil {
|
||||
addr.IPNet = local
|
||||
if family == FAMILY_V4 && local.IP.Equal(dst.IP) {
|
||||
addr.IPNet = dst
|
||||
} else {
|
||||
addr.IPNet = local
|
||||
addr.Peer = dst
|
||||
}
|
||||
} else {
|
||||
addr.IPNet = dst
|
||||
}
|
||||
|
||||
addr.Scope = int(msg.Scope)
|
||||
|
||||
return
|
||||
@@ -236,13 +270,13 @@ type AddrUpdate struct {
|
||||
// AddrSubscribe takes a chan down which notifications will be sent
|
||||
// when addresses change. Close the 'done' chan to stop subscription.
|
||||
func AddrSubscribe(ch chan<- AddrUpdate, done <-chan struct{}) error {
|
||||
return addrSubscribeAt(netns.None(), netns.None(), ch, done, nil)
|
||||
return addrSubscribeAt(netns.None(), netns.None(), ch, done, nil, false)
|
||||
}
|
||||
|
||||
// AddrSubscribeAt works like AddrSubscribe plus it allows the caller
|
||||
// to choose the network namespace in which to subscribe (ns).
|
||||
func AddrSubscribeAt(ns netns.NsHandle, ch chan<- AddrUpdate, done <-chan struct{}) error {
|
||||
return addrSubscribeAt(ns, netns.None(), ch, done, nil)
|
||||
return addrSubscribeAt(ns, netns.None(), ch, done, nil, false)
|
||||
}
|
||||
|
||||
// AddrSubscribeOptions contains a set of options to use with
|
||||
@@ -250,6 +284,7 @@ func AddrSubscribeAt(ns netns.NsHandle, ch chan<- AddrUpdate, done <-chan struct
|
||||
type AddrSubscribeOptions struct {
|
||||
Namespace *netns.NsHandle
|
||||
ErrorCallback func(error)
|
||||
ListExisting bool
|
||||
}
|
||||
|
||||
// AddrSubscribeWithOptions work like AddrSubscribe but enable to
|
||||
@@ -260,10 +295,10 @@ func AddrSubscribeWithOptions(ch chan<- AddrUpdate, done <-chan struct{}, option
|
||||
none := netns.None()
|
||||
options.Namespace = &none
|
||||
}
|
||||
return addrSubscribeAt(*options.Namespace, netns.None(), ch, done, options.ErrorCallback)
|
||||
return addrSubscribeAt(*options.Namespace, netns.None(), ch, done, options.ErrorCallback, options.ListExisting)
|
||||
}
|
||||
|
||||
func addrSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- AddrUpdate, done <-chan struct{}, cberr func(error)) error {
|
||||
func addrSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- AddrUpdate, done <-chan struct{}, cberr func(error), listExisting bool) error {
|
||||
s, err := nl.SubscribeAt(newNs, curNs, unix.NETLINK_ROUTE, unix.RTNLGRP_IPV4_IFADDR, unix.RTNLGRP_IPV6_IFADDR)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -274,6 +309,15 @@ func addrSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- AddrUpdate, done <-c
|
||||
s.Close()
|
||||
}()
|
||||
}
|
||||
if listExisting {
|
||||
req := pkgHandle.newNetlinkRequest(unix.RTM_GETADDR,
|
||||
unix.NLM_F_DUMP)
|
||||
infmsg := nl.NewIfInfomsg(unix.AF_UNSPEC)
|
||||
req.AddData(infmsg)
|
||||
if err := s.Send(req); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
go func() {
|
||||
defer close(ch)
|
||||
for {
|
||||
@@ -285,6 +329,20 @@ func addrSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- AddrUpdate, done <-c
|
||||
return
|
||||
}
|
||||
for _, m := range msgs {
|
||||
if m.Header.Type == unix.NLMSG_DONE {
|
||||
continue
|
||||
}
|
||||
if m.Header.Type == unix.NLMSG_ERROR {
|
||||
native := nl.NativeEndian()
|
||||
error := int32(native.Uint32(m.Data[0:4]))
|
||||
if error == 0 {
|
||||
continue
|
||||
}
|
||||
if cberr != nil {
|
||||
cberr(syscall.Errno(-error))
|
||||
}
|
||||
return
|
||||
}
|
||||
msgType := m.Header.Type
|
||||
if msgType != unix.RTM_NEWADDR && msgType != unix.RTM_DELADDR {
|
||||
if cberr != nil {
|
||||
|
||||
83
vendor/github.com/vishvananda/netlink/bpf_linux.go
generated
vendored
83
vendor/github.com/vishvananda/netlink/bpf_linux.go
generated
vendored
@@ -1,49 +1,12 @@
|
||||
package netlink
|
||||
|
||||
/*
|
||||
#include <asm/types.h>
|
||||
#include <asm/unistd.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
import (
|
||||
"unsafe"
|
||||
|
||||
static int load_simple_bpf(int prog_type, int ret) {
|
||||
#ifdef __NR_bpf
|
||||
// { return ret; }
|
||||
__u64 __attribute__((aligned(8))) insns[] = {
|
||||
0x00000000000000b7ull | ((__u64)ret<<32),
|
||||
0x0000000000000095ull,
|
||||
};
|
||||
__u8 __attribute__((aligned(8))) license[] = "ASL2";
|
||||
// Copied from a header file since libc is notoriously slow to update.
|
||||
// The call will succeed or fail and that will be our indication on
|
||||
// whether or not it is supported.
|
||||
struct {
|
||||
__u32 prog_type;
|
||||
__u32 insn_cnt;
|
||||
__u64 insns;
|
||||
__u64 license;
|
||||
__u32 log_level;
|
||||
__u32 log_size;
|
||||
__u64 log_buf;
|
||||
__u32 kern_version;
|
||||
} __attribute__((aligned(8))) attr = {
|
||||
.prog_type = prog_type,
|
||||
.insn_cnt = 2,
|
||||
.insns = (uintptr_t)&insns,
|
||||
.license = (uintptr_t)&license,
|
||||
};
|
||||
return syscall(__NR_bpf, 5, &attr, sizeof(attr));
|
||||
#else
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
*/
|
||||
import "C"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
type BpfProgType C.int
|
||||
type BpfProgType uint32
|
||||
|
||||
const (
|
||||
BPF_PROG_TYPE_UNSPEC BpfProgType = iota
|
||||
@@ -55,8 +18,36 @@ const (
|
||||
BPF_PROG_TYPE_XDP
|
||||
)
|
||||
|
||||
// loadSimpleBpf loads a trivial bpf program for testing purposes
|
||||
func loadSimpleBpf(progType BpfProgType, ret int) (int, error) {
|
||||
fd, err := C.load_simple_bpf(C.int(progType), C.int(ret))
|
||||
return int(fd), err
|
||||
type BPFAttr struct {
|
||||
ProgType uint32
|
||||
InsnCnt uint32
|
||||
Insns uintptr
|
||||
License uintptr
|
||||
LogLevel uint32
|
||||
LogSize uint32
|
||||
LogBuf uintptr
|
||||
KernVersion uint32
|
||||
}
|
||||
|
||||
// loadSimpleBpf loads a trivial bpf program for testing purposes.
|
||||
func loadSimpleBpf(progType BpfProgType, ret uint32) (int, error) {
|
||||
insns := []uint64{
|
||||
0x00000000000000b7 | (uint64(ret) << 32),
|
||||
0x0000000000000095,
|
||||
}
|
||||
license := []byte{'A', 'S', 'L', '2', '\x00'}
|
||||
attr := BPFAttr{
|
||||
ProgType: uint32(progType),
|
||||
InsnCnt: uint32(len(insns)),
|
||||
Insns: uintptr(unsafe.Pointer(&insns[0])),
|
||||
License: uintptr(unsafe.Pointer(&license[0])),
|
||||
}
|
||||
fd, _, errno := unix.Syscall(unix.SYS_BPF,
|
||||
5, /* bpf cmd */
|
||||
uintptr(unsafe.Pointer(&attr)),
|
||||
unsafe.Sizeof(attr))
|
||||
if errno != 0 {
|
||||
return 0, errno
|
||||
}
|
||||
return int(fd), nil
|
||||
}
|
||||
|
||||
15
vendor/github.com/vishvananda/netlink/bridge_linux.go
generated
vendored
15
vendor/github.com/vishvananda/netlink/bridge_linux.go
generated
vendored
@@ -19,7 +19,7 @@ func (h *Handle) BridgeVlanList() (map[int32][]*nl.BridgeVlanInfo, error) {
|
||||
req := h.newNetlinkRequest(unix.RTM_GETLINK, unix.NLM_F_DUMP)
|
||||
msg := nl.NewIfInfomsg(unix.AF_BRIDGE)
|
||||
req.AddData(msg)
|
||||
req.AddData(nl.NewRtAttr(nl.IFLA_EXT_MASK, nl.Uint32Attr(uint32(nl.RTEXT_FILTER_BRVLAN))))
|
||||
req.AddData(nl.NewRtAttr(unix.IFLA_EXT_MASK, nl.Uint32Attr(uint32(nl.RTEXT_FILTER_BRVLAN))))
|
||||
|
||||
msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWLINK)
|
||||
if err != nil {
|
||||
@@ -35,7 +35,7 @@ func (h *Handle) BridgeVlanList() (map[int32][]*nl.BridgeVlanInfo, error) {
|
||||
}
|
||||
for _, attr := range attrs {
|
||||
switch attr.Attr.Type {
|
||||
case nl.IFLA_AF_SPEC:
|
||||
case unix.IFLA_AF_SPEC:
|
||||
//nested attr
|
||||
nestAttrs, err := nl.ParseRouteAttr(attr.Value)
|
||||
if err != nil {
|
||||
@@ -87,7 +87,7 @@ func (h *Handle) bridgeVlanModify(cmd int, link Link, vid uint16, pvid, untagged
|
||||
msg.Index = int32(base.Index)
|
||||
req.AddData(msg)
|
||||
|
||||
br := nl.NewRtAttr(nl.IFLA_AF_SPEC, nil)
|
||||
br := nl.NewRtAttr(unix.IFLA_AF_SPEC, nil)
|
||||
var flags uint16
|
||||
if self {
|
||||
flags |= nl.BRIDGE_FLAGS_SELF
|
||||
@@ -96,7 +96,7 @@ func (h *Handle) bridgeVlanModify(cmd int, link Link, vid uint16, pvid, untagged
|
||||
flags |= nl.BRIDGE_FLAGS_MASTER
|
||||
}
|
||||
if flags > 0 {
|
||||
nl.NewRtAttrChild(br, nl.IFLA_BRIDGE_FLAGS, nl.Uint16Attr(flags))
|
||||
br.AddRtAttr(nl.IFLA_BRIDGE_FLAGS, nl.Uint16Attr(flags))
|
||||
}
|
||||
vlanInfo := &nl.BridgeVlanInfo{Vid: vid}
|
||||
if pvid {
|
||||
@@ -105,11 +105,8 @@ func (h *Handle) bridgeVlanModify(cmd int, link Link, vid uint16, pvid, untagged
|
||||
if untagged {
|
||||
vlanInfo.Flags |= nl.BRIDGE_VLAN_INFO_UNTAGGED
|
||||
}
|
||||
nl.NewRtAttrChild(br, nl.IFLA_BRIDGE_VLAN_INFO, vlanInfo.Serialize())
|
||||
br.AddRtAttr(nl.IFLA_BRIDGE_VLAN_INFO, vlanInfo.Serialize())
|
||||
req.AddData(br)
|
||||
_, err := req.Execute(unix.NETLINK_ROUTE, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
|
||||
141
vendor/github.com/vishvananda/netlink/class.go
generated
vendored
141
vendor/github.com/vishvananda/netlink/class.go
generated
vendored
@@ -4,25 +4,76 @@ import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// Class interfaces for all classes
|
||||
type Class interface {
|
||||
Attrs() *ClassAttrs
|
||||
Type() string
|
||||
}
|
||||
|
||||
// Generic networking statistics for netlink users.
|
||||
// This file contains "gnet_" prefixed structs and relevant functions.
|
||||
// See Documentation/networking/getn_stats.txt in Linux source code for more details.
|
||||
|
||||
// GnetStatsBasic Ref: struct gnet_stats_basic { ... }
|
||||
type GnetStatsBasic struct {
|
||||
Bytes uint64 // number of seen bytes
|
||||
Packets uint32 // number of seen packets
|
||||
}
|
||||
|
||||
// GnetStatsRateEst Ref: struct gnet_stats_rate_est { ... }
|
||||
type GnetStatsRateEst struct {
|
||||
Bps uint32 // current byte rate
|
||||
Pps uint32 // current packet rate
|
||||
}
|
||||
|
||||
// GnetStatsRateEst64 Ref: struct gnet_stats_rate_est64 { ... }
|
||||
type GnetStatsRateEst64 struct {
|
||||
Bps uint64 // current byte rate
|
||||
Pps uint64 // current packet rate
|
||||
}
|
||||
|
||||
// GnetStatsQueue Ref: struct gnet_stats_queue { ... }
|
||||
type GnetStatsQueue struct {
|
||||
Qlen uint32 // queue length
|
||||
Backlog uint32 // backlog size of queue
|
||||
Drops uint32 // number of dropped packets
|
||||
Requeues uint32 // number of requues
|
||||
Overlimits uint32 // number of enqueues over the limit
|
||||
}
|
||||
|
||||
// ClassStatistics representation based on generic networking statistics for netlink.
|
||||
// See Documentation/networking/gen_stats.txt in Linux source code for more details.
|
||||
type ClassStatistics struct {
|
||||
Basic *GnetStatsBasic
|
||||
Queue *GnetStatsQueue
|
||||
RateEst *GnetStatsRateEst
|
||||
}
|
||||
|
||||
// NewClassStatistics Construct a ClassStatistics struct which fields are all initialized by 0.
|
||||
func NewClassStatistics() *ClassStatistics {
|
||||
return &ClassStatistics{
|
||||
Basic: &GnetStatsBasic{},
|
||||
Queue: &GnetStatsQueue{},
|
||||
RateEst: &GnetStatsRateEst{},
|
||||
}
|
||||
}
|
||||
|
||||
// ClassAttrs represents a netlink class. A filter is associated with a link,
|
||||
// has a handle and a parent. The root filter of a device should have a
|
||||
// parent == HANDLE_ROOT.
|
||||
type ClassAttrs struct {
|
||||
LinkIndex int
|
||||
Handle uint32
|
||||
Parent uint32
|
||||
Leaf uint32
|
||||
LinkIndex int
|
||||
Handle uint32
|
||||
Parent uint32
|
||||
Leaf uint32
|
||||
Statistics *ClassStatistics
|
||||
}
|
||||
|
||||
func (q ClassAttrs) String() string {
|
||||
return fmt.Sprintf("{LinkIndex: %d, Handle: %s, Parent: %s, Leaf: %d}", q.LinkIndex, HandleStr(q.Handle), HandleStr(q.Parent), q.Leaf)
|
||||
}
|
||||
|
||||
// HtbClassAttrs stores the attributes of HTB class
|
||||
type HtbClassAttrs struct {
|
||||
// TODO handle all attributes
|
||||
Rate uint64
|
||||
@@ -54,10 +105,12 @@ func (q HtbClass) String() string {
|
||||
return fmt.Sprintf("{Rate: %d, Ceil: %d, Buffer: %d, Cbuffer: %d}", q.Rate, q.Ceil, q.Buffer, q.Cbuffer)
|
||||
}
|
||||
|
||||
// Attrs returns the class attributes
|
||||
func (q *HtbClass) Attrs() *ClassAttrs {
|
||||
return &q.ClassAttrs
|
||||
}
|
||||
|
||||
// Type return the class type
|
||||
func (q *HtbClass) Type() string {
|
||||
return "htb"
|
||||
}
|
||||
@@ -69,10 +122,90 @@ type GenericClass struct {
|
||||
ClassType string
|
||||
}
|
||||
|
||||
// Attrs return the class attributes
|
||||
func (class *GenericClass) Attrs() *ClassAttrs {
|
||||
return &class.ClassAttrs
|
||||
}
|
||||
|
||||
// Type return the class type
|
||||
func (class *GenericClass) Type() string {
|
||||
return class.ClassType
|
||||
}
|
||||
|
||||
// ServiceCurve is the way the HFSC curve are represented
|
||||
type ServiceCurve struct {
|
||||
m1 uint32
|
||||
d uint32
|
||||
m2 uint32
|
||||
}
|
||||
|
||||
// Attrs return the parameters of the service curve
|
||||
func (c *ServiceCurve) Attrs() (uint32, uint32, uint32) {
|
||||
return c.m1, c.d, c.m2
|
||||
}
|
||||
|
||||
// HfscClass is a representation of the HFSC class
|
||||
type HfscClass struct {
|
||||
ClassAttrs
|
||||
Rsc ServiceCurve
|
||||
Fsc ServiceCurve
|
||||
Usc ServiceCurve
|
||||
}
|
||||
|
||||
// SetUsc sets the Usc curve
|
||||
func (hfsc *HfscClass) SetUsc(m1 uint32, d uint32, m2 uint32) {
|
||||
hfsc.Usc = ServiceCurve{m1: m1 / 8, d: d, m2: m2 / 8}
|
||||
}
|
||||
|
||||
// SetFsc sets the Fsc curve
|
||||
func (hfsc *HfscClass) SetFsc(m1 uint32, d uint32, m2 uint32) {
|
||||
hfsc.Fsc = ServiceCurve{m1: m1 / 8, d: d, m2: m2 / 8}
|
||||
}
|
||||
|
||||
// SetRsc sets the Rsc curve
|
||||
func (hfsc *HfscClass) SetRsc(m1 uint32, d uint32, m2 uint32) {
|
||||
hfsc.Rsc = ServiceCurve{m1: m1 / 8, d: d, m2: m2 / 8}
|
||||
}
|
||||
|
||||
// SetSC implements the SC from the tc CLI
|
||||
func (hfsc *HfscClass) SetSC(m1 uint32, d uint32, m2 uint32) {
|
||||
hfsc.Rsc = ServiceCurve{m1: m1 / 8, d: d, m2: m2 / 8}
|
||||
hfsc.Fsc = ServiceCurve{m1: m1 / 8, d: d, m2: m2 / 8}
|
||||
}
|
||||
|
||||
// SetUL implements the UL from the tc CLI
|
||||
func (hfsc *HfscClass) SetUL(m1 uint32, d uint32, m2 uint32) {
|
||||
hfsc.Usc = ServiceCurve{m1: m1 / 8, d: d, m2: m2 / 8}
|
||||
}
|
||||
|
||||
// SetLS implements the LS from the tc CLI
|
||||
func (hfsc *HfscClass) SetLS(m1 uint32, d uint32, m2 uint32) {
|
||||
hfsc.Fsc = ServiceCurve{m1: m1 / 8, d: d, m2: m2 / 8}
|
||||
}
|
||||
|
||||
// NewHfscClass returns a new HFSC struct with the set parameters
|
||||
func NewHfscClass(attrs ClassAttrs) *HfscClass {
|
||||
return &HfscClass{
|
||||
ClassAttrs: attrs,
|
||||
Rsc: ServiceCurve{},
|
||||
Fsc: ServiceCurve{},
|
||||
Usc: ServiceCurve{},
|
||||
}
|
||||
}
|
||||
|
||||
func (hfsc *HfscClass) String() string {
|
||||
return fmt.Sprintf(
|
||||
"{%s -- {RSC: {m1=%d d=%d m2=%d}} {FSC: {m1=%d d=%d m2=%d}} {USC: {m1=%d d=%d m2=%d}}}",
|
||||
hfsc.Attrs(), hfsc.Rsc.m1*8, hfsc.Rsc.d, hfsc.Rsc.m2*8, hfsc.Fsc.m1*8, hfsc.Fsc.d, hfsc.Fsc.m2*8, hfsc.Usc.m1*8, hfsc.Usc.d, hfsc.Usc.m2*8,
|
||||
)
|
||||
}
|
||||
|
||||
// Attrs return the Hfsc parameters
|
||||
func (hfsc *HfscClass) Attrs() *ClassAttrs {
|
||||
return &hfsc.ClassAttrs
|
||||
}
|
||||
|
||||
// Type return the type of the class
|
||||
func (hfsc *HfscClass) Type() string {
|
||||
return "hfsc"
|
||||
}
|
||||
|
||||
145
vendor/github.com/vishvananda/netlink/class_linux.go
generated
vendored
145
vendor/github.com/vishvananda/netlink/class_linux.go
generated
vendored
@@ -1,14 +1,34 @@
|
||||
package netlink
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"fmt"
|
||||
"syscall"
|
||||
|
||||
"github.com/vishvananda/netlink/nl"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
// NOTE: function is in here because it uses other linux functions
|
||||
// Internal tc_stats representation in Go struct.
|
||||
// This is for internal uses only to deserialize the payload of rtattr.
|
||||
// After the deserialization, this should be converted into the canonical stats
|
||||
// struct, ClassStatistics, in case of statistics of a class.
|
||||
// Ref: struct tc_stats { ... }
|
||||
type tcStats struct {
|
||||
Bytes uint64 // Number of enqueued bytes
|
||||
Packets uint32 // Number of enqueued packets
|
||||
Drops uint32 // Packets dropped because of lack of resources
|
||||
Overlimits uint32 // Number of throttle events when this flow goes out of allocated bandwidth
|
||||
Bps uint32 // Current flow byte rate
|
||||
Pps uint32 // Current flow packet rate
|
||||
Qlen uint32
|
||||
Backlog uint32
|
||||
}
|
||||
|
||||
// NewHtbClass NOTE: function is in here because it uses other linux functions
|
||||
func NewHtbClass(attrs ClassAttrs, cattrs HtbClassAttrs) *HtbClass {
|
||||
mtu := 1600
|
||||
rate := cattrs.Rate / 8
|
||||
@@ -126,7 +146,9 @@ func classPayload(req *nl.NetlinkRequest, class Class) error {
|
||||
req.AddData(nl.NewRtAttr(nl.TCA_KIND, nl.ZeroTerminated(class.Type())))
|
||||
|
||||
options := nl.NewRtAttr(nl.TCA_OPTIONS, nil)
|
||||
if htb, ok := class.(*HtbClass); ok {
|
||||
switch class.Type() {
|
||||
case "htb":
|
||||
htb := class.(*HtbClass)
|
||||
opt := nl.TcHtbCopt{}
|
||||
opt.Buffer = htb.Buffer
|
||||
opt.Cbuffer = htb.Cbuffer
|
||||
@@ -151,9 +173,18 @@ func classPayload(req *nl.NetlinkRequest, class Class) error {
|
||||
return errors.New("HTB: failed to calculate ceil rate table")
|
||||
}
|
||||
opt.Ceil = tcceil
|
||||
nl.NewRtAttrChild(options, nl.TCA_HTB_PARMS, opt.Serialize())
|
||||
nl.NewRtAttrChild(options, nl.TCA_HTB_RTAB, SerializeRtab(rtab))
|
||||
nl.NewRtAttrChild(options, nl.TCA_HTB_CTAB, SerializeRtab(ctab))
|
||||
options.AddRtAttr(nl.TCA_HTB_PARMS, opt.Serialize())
|
||||
options.AddRtAttr(nl.TCA_HTB_RTAB, SerializeRtab(rtab))
|
||||
options.AddRtAttr(nl.TCA_HTB_CTAB, SerializeRtab(ctab))
|
||||
case "hfsc":
|
||||
hfsc := class.(*HfscClass)
|
||||
opt := nl.HfscCopt{}
|
||||
opt.Rsc.Set(hfsc.Rsc.Attrs())
|
||||
opt.Fsc.Set(hfsc.Fsc.Attrs())
|
||||
opt.Usc.Set(hfsc.Usc.Attrs())
|
||||
options.AddRtAttr(nl.TCA_HFSC_RSC, nl.SerializeHfscCurve(&opt.Rsc))
|
||||
options.AddRtAttr(nl.TCA_HFSC_FSC, nl.SerializeHfscCurve(&opt.Fsc))
|
||||
options.AddRtAttr(nl.TCA_HFSC_USC, nl.SerializeHfscCurve(&opt.Usc))
|
||||
}
|
||||
req.AddData(options)
|
||||
return nil
|
||||
@@ -197,9 +228,10 @@ func (h *Handle) ClassList(link Link, parent uint32) ([]Class, error) {
|
||||
}
|
||||
|
||||
base := ClassAttrs{
|
||||
LinkIndex: int(msg.Ifindex),
|
||||
Handle: msg.Handle,
|
||||
Parent: msg.Parent,
|
||||
LinkIndex: int(msg.Ifindex),
|
||||
Handle: msg.Handle,
|
||||
Parent: msg.Parent,
|
||||
Statistics: nil,
|
||||
}
|
||||
|
||||
var class Class
|
||||
@@ -211,6 +243,8 @@ func (h *Handle) ClassList(link Link, parent uint32) ([]Class, error) {
|
||||
switch classType {
|
||||
case "htb":
|
||||
class = &HtbClass{}
|
||||
case "hfsc":
|
||||
class = &HfscClass{}
|
||||
default:
|
||||
class = &GenericClass{ClassType: classType}
|
||||
}
|
||||
@@ -225,6 +259,26 @@ func (h *Handle) ClassList(link Link, parent uint32) ([]Class, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "hfsc":
|
||||
data, err := nl.ParseRouteAttr(attr.Value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_, err = parseHfscClassData(class, data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
// For backward compatibility.
|
||||
case nl.TCA_STATS:
|
||||
base.Statistics, err = parseTcStats(attr.Value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case nl.TCA_STATS2:
|
||||
base.Statistics, err = parseTcStats2(attr.Value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -253,3 +307,78 @@ func parseHtbClassData(class Class, data []syscall.NetlinkRouteAttr) (bool, erro
|
||||
}
|
||||
return detailed, nil
|
||||
}
|
||||
|
||||
func parseHfscClassData(class Class, data []syscall.NetlinkRouteAttr) (bool, error) {
|
||||
hfsc := class.(*HfscClass)
|
||||
detailed := false
|
||||
for _, datum := range data {
|
||||
m1, d, m2 := nl.DeserializeHfscCurve(datum.Value).Attrs()
|
||||
switch datum.Attr.Type {
|
||||
case nl.TCA_HFSC_RSC:
|
||||
hfsc.Rsc = ServiceCurve{m1: m1, d: d, m2: m2}
|
||||
case nl.TCA_HFSC_FSC:
|
||||
hfsc.Fsc = ServiceCurve{m1: m1, d: d, m2: m2}
|
||||
case nl.TCA_HFSC_USC:
|
||||
hfsc.Usc = ServiceCurve{m1: m1, d: d, m2: m2}
|
||||
}
|
||||
}
|
||||
return detailed, nil
|
||||
}
|
||||
|
||||
func parseTcStats(data []byte) (*ClassStatistics, error) {
|
||||
buf := &bytes.Buffer{}
|
||||
buf.Write(data)
|
||||
native := nl.NativeEndian()
|
||||
tcStats := &tcStats{}
|
||||
if err := binary.Read(buf, native, tcStats); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
stats := NewClassStatistics()
|
||||
stats.Basic.Bytes = tcStats.Bytes
|
||||
stats.Basic.Packets = tcStats.Packets
|
||||
stats.Queue.Qlen = tcStats.Qlen
|
||||
stats.Queue.Backlog = tcStats.Backlog
|
||||
stats.Queue.Drops = tcStats.Drops
|
||||
stats.Queue.Overlimits = tcStats.Overlimits
|
||||
stats.RateEst.Bps = tcStats.Bps
|
||||
stats.RateEst.Pps = tcStats.Pps
|
||||
|
||||
return stats, nil
|
||||
}
|
||||
|
||||
func parseGnetStats(data []byte, gnetStats interface{}) error {
|
||||
buf := &bytes.Buffer{}
|
||||
buf.Write(data)
|
||||
native := nl.NativeEndian()
|
||||
return binary.Read(buf, native, gnetStats)
|
||||
}
|
||||
|
||||
func parseTcStats2(data []byte) (*ClassStatistics, error) {
|
||||
rtAttrs, err := nl.ParseRouteAttr(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
stats := NewClassStatistics()
|
||||
for _, datum := range rtAttrs {
|
||||
switch datum.Attr.Type {
|
||||
case nl.TCA_STATS_BASIC:
|
||||
if err := parseGnetStats(datum.Value, stats.Basic); err != nil {
|
||||
return nil, fmt.Errorf("Failed to parse ClassStatistics.Basic with: %v\n%s",
|
||||
err, hex.Dump(datum.Value))
|
||||
}
|
||||
case nl.TCA_STATS_QUEUE:
|
||||
if err := parseGnetStats(datum.Value, stats.Queue); err != nil {
|
||||
return nil, fmt.Errorf("Failed to parse ClassStatistics.Queue with: %v\n%s",
|
||||
err, hex.Dump(datum.Value))
|
||||
}
|
||||
case nl.TCA_STATS_RATE_EST:
|
||||
if err := parseGnetStats(datum.Value, stats.RateEst); err != nil {
|
||||
return nil, fmt.Errorf("Failed to parse ClassStatistics.RateEst with: %v\n%s",
|
||||
err, hex.Dump(datum.Value))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return stats, nil
|
||||
}
|
||||
|
||||
89
vendor/github.com/vishvananda/netlink/conntrack_linux.go
generated
vendored
89
vendor/github.com/vishvananda/netlink/conntrack_linux.go
generated
vendored
@@ -135,11 +135,13 @@ func (h *Handle) dumpConntrackTable(table ConntrackTableType, family InetFamily)
|
||||
// http://git.netfilter.org/libnetfilter_conntrack/tree/include/internal/object.h
|
||||
// For the time being, the structure below allows to parse and extract the base information of a flow
|
||||
type ipTuple struct {
|
||||
SrcIP net.IP
|
||||
Bytes uint64
|
||||
DstIP net.IP
|
||||
Protocol uint8
|
||||
SrcPort uint16
|
||||
DstPort uint16
|
||||
Packets uint64
|
||||
Protocol uint8
|
||||
SrcIP net.IP
|
||||
SrcPort uint16
|
||||
}
|
||||
|
||||
type ConntrackFlow struct {
|
||||
@@ -151,11 +153,12 @@ type ConntrackFlow struct {
|
||||
|
||||
func (s *ConntrackFlow) String() string {
|
||||
// conntrack cmd output:
|
||||
// udp 17 src=127.0.0.1 dst=127.0.0.1 sport=4001 dport=1234 [UNREPLIED] src=127.0.0.1 dst=127.0.0.1 sport=1234 dport=4001 mark=0
|
||||
return fmt.Sprintf("%s\t%d src=%s dst=%s sport=%d dport=%d\tsrc=%s dst=%s sport=%d dport=%d mark=%d",
|
||||
// udp 17 src=127.0.0.1 dst=127.0.0.1 sport=4001 dport=1234 packets=5 bytes=532 [UNREPLIED] src=127.0.0.1 dst=127.0.0.1 sport=1234 dport=4001 packets=10 bytes=1078 mark=0
|
||||
return fmt.Sprintf("%s\t%d src=%s dst=%s sport=%d dport=%d packets=%d bytes=%d\tsrc=%s dst=%s sport=%d dport=%d packets=%d bytes=%d mark=%d",
|
||||
nl.L4ProtoMap[s.Forward.Protocol], s.Forward.Protocol,
|
||||
s.Forward.SrcIP.String(), s.Forward.DstIP.String(), s.Forward.SrcPort, s.Forward.DstPort,
|
||||
s.Reverse.SrcIP.String(), s.Reverse.DstIP.String(), s.Reverse.SrcPort, s.Reverse.DstPort, s.Mark)
|
||||
s.Forward.SrcIP.String(), s.Forward.DstIP.String(), s.Forward.SrcPort, s.Forward.DstPort, s.Forward.Packets, s.Forward.Bytes,
|
||||
s.Reverse.SrcIP.String(), s.Reverse.DstIP.String(), s.Reverse.SrcPort, s.Reverse.DstPort, s.Reverse.Packets, s.Reverse.Bytes,
|
||||
s.Mark)
|
||||
}
|
||||
|
||||
// This method parse the ip tuple structure
|
||||
@@ -220,6 +223,24 @@ func parseBERaw16(r *bytes.Reader, v *uint16) {
|
||||
binary.Read(r, binary.BigEndian, v)
|
||||
}
|
||||
|
||||
func parseBERaw64(r *bytes.Reader, v *uint64) {
|
||||
binary.Read(r, binary.BigEndian, v)
|
||||
}
|
||||
|
||||
func parseByteAndPacketCounters(r *bytes.Reader) (bytes, packets uint64) {
|
||||
for i := 0; i < 2; i++ {
|
||||
switch _, t, _ := parseNfAttrTL(r); t {
|
||||
case nl.CTA_COUNTERS_BYTES:
|
||||
parseBERaw64(r, &bytes)
|
||||
case nl.CTA_COUNTERS_PACKETS:
|
||||
parseBERaw64(r, &packets)
|
||||
default:
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func parseRawData(data []byte) *ConntrackFlow {
|
||||
s := &ConntrackFlow{}
|
||||
var proto uint8
|
||||
@@ -238,20 +259,23 @@ func parseRawData(data []byte) *ConntrackFlow {
|
||||
// <len, NLA_F_NESTED|CTA_TUPLE_IP> 4 bytes
|
||||
// flow information of the reverse flow
|
||||
for reader.Len() > 0 {
|
||||
nested, t, l := parseNfAttrTL(reader)
|
||||
if nested && t == nl.CTA_TUPLE_ORIG {
|
||||
if nested, t, _ = parseNfAttrTL(reader); nested && t == nl.CTA_TUPLE_IP {
|
||||
proto = parseIpTuple(reader, &s.Forward)
|
||||
}
|
||||
} else if nested && t == nl.CTA_TUPLE_REPLY {
|
||||
if nested, t, _ = parseNfAttrTL(reader); nested && t == nl.CTA_TUPLE_IP {
|
||||
parseIpTuple(reader, &s.Reverse)
|
||||
|
||||
// Got all the useful information stop parsing
|
||||
break
|
||||
} else {
|
||||
// Header not recognized skip it
|
||||
reader.Seek(int64(l), seekCurrent)
|
||||
if nested, t, l := parseNfAttrTL(reader); nested {
|
||||
switch t {
|
||||
case nl.CTA_TUPLE_ORIG:
|
||||
if nested, t, _ = parseNfAttrTL(reader); nested && t == nl.CTA_TUPLE_IP {
|
||||
proto = parseIpTuple(reader, &s.Forward)
|
||||
}
|
||||
case nl.CTA_TUPLE_REPLY:
|
||||
if nested, t, _ = parseNfAttrTL(reader); nested && t == nl.CTA_TUPLE_IP {
|
||||
parseIpTuple(reader, &s.Reverse)
|
||||
} else {
|
||||
// Header not recognized skip it
|
||||
reader.Seek(int64(l), seekCurrent)
|
||||
}
|
||||
case nl.CTA_COUNTERS_ORIG:
|
||||
s.Forward.Bytes, s.Forward.Packets = parseByteAndPacketCounters(reader)
|
||||
case nl.CTA_COUNTERS_REPLY:
|
||||
s.Reverse.Bytes, s.Reverse.Packets = parseByteAndPacketCounters(reader)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -285,7 +309,7 @@ func parseRawData(data []byte) *ConntrackFlow {
|
||||
// Common parameters and options:
|
||||
// -s, --src, --orig-src ip Source address from original direction
|
||||
// -d, --dst, --orig-dst ip Destination address from original direction
|
||||
// -r, --reply-src ip Source addres from reply direction
|
||||
// -r, --reply-src ip Source address from reply direction
|
||||
// -q, --reply-dst ip Destination address from reply direction
|
||||
// -p, --protonum proto Layer 4 Protocol, eg. 'tcp'
|
||||
// -f, --family proto Layer 3 Protocol, eg. 'ipv6'
|
||||
@@ -302,11 +326,14 @@ func parseRawData(data []byte) *ConntrackFlow {
|
||||
type ConntrackFilterType uint8
|
||||
|
||||
const (
|
||||
ConntrackOrigSrcIP = iota // -orig-src ip Source address from original direction
|
||||
ConntrackOrigDstIP // -orig-dst ip Destination address from original direction
|
||||
ConntrackNatSrcIP // -src-nat ip Source NAT ip
|
||||
ConntrackNatDstIP // -dst-nat ip Destination NAT ip
|
||||
ConntrackNatAnyIP // -any-nat ip Source or destination NAT ip
|
||||
ConntrackOrigSrcIP = iota // -orig-src ip Source address from original direction
|
||||
ConntrackOrigDstIP // -orig-dst ip Destination address from original direction
|
||||
ConntrackReplySrcIP // --reply-src ip Reply Source IP
|
||||
ConntrackReplyDstIP // --reply-dst ip Reply Destination IP
|
||||
ConntrackReplyAnyIP // Match source or destination reply IP
|
||||
ConntrackNatSrcIP = ConntrackReplySrcIP // deprecated use instead ConntrackReplySrcIP
|
||||
ConntrackNatDstIP = ConntrackReplyDstIP // deprecated use instead ConntrackReplyDstIP
|
||||
ConntrackNatAnyIP = ConntrackReplyAnyIP // deprecated use instaed ConntrackReplyAnyIP
|
||||
)
|
||||
|
||||
type CustomConntrackFilter interface {
|
||||
@@ -351,17 +378,17 @@ func (f *ConntrackFilter) MatchConntrackFlow(flow *ConntrackFlow) bool {
|
||||
}
|
||||
|
||||
// -src-nat ip Source NAT ip
|
||||
if elem, found := f.ipFilter[ConntrackNatSrcIP]; match && found {
|
||||
if elem, found := f.ipFilter[ConntrackReplySrcIP]; match && found {
|
||||
match = match && elem.Equal(flow.Reverse.SrcIP)
|
||||
}
|
||||
|
||||
// -dst-nat ip Destination NAT ip
|
||||
if elem, found := f.ipFilter[ConntrackNatDstIP]; match && found {
|
||||
if elem, found := f.ipFilter[ConntrackReplyDstIP]; match && found {
|
||||
match = match && elem.Equal(flow.Reverse.DstIP)
|
||||
}
|
||||
|
||||
// -any-nat ip Source or destination NAT ip
|
||||
if elem, found := f.ipFilter[ConntrackNatAnyIP]; match && found {
|
||||
// Match source or destination reply IP
|
||||
if elem, found := f.ipFilter[ConntrackReplyAnyIP]; match && found {
|
||||
match = match && (elem.Equal(flow.Reverse.SrcIP) || elem.Equal(flow.Reverse.DstIP))
|
||||
}
|
||||
|
||||
|
||||
272
vendor/github.com/vishvananda/netlink/devlink_linux.go
generated
vendored
Normal file
272
vendor/github.com/vishvananda/netlink/devlink_linux.go
generated
vendored
Normal file
@@ -0,0 +1,272 @@
|
||||
package netlink
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
|
||||
"fmt"
|
||||
"github.com/vishvananda/netlink/nl"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
// DevlinkDevEswitchAttr represents device's eswitch attributes
|
||||
type DevlinkDevEswitchAttr struct {
|
||||
Mode string
|
||||
InlineMode string
|
||||
EncapMode string
|
||||
}
|
||||
|
||||
// DevlinkDevAttrs represents device attributes
|
||||
type DevlinkDevAttrs struct {
|
||||
Eswitch DevlinkDevEswitchAttr
|
||||
}
|
||||
|
||||
// DevlinkDevice represents device and its attributes
|
||||
type DevlinkDevice struct {
|
||||
BusName string
|
||||
DeviceName string
|
||||
Attrs DevlinkDevAttrs
|
||||
}
|
||||
|
||||
func parseDevLinkDeviceList(msgs [][]byte) ([]*DevlinkDevice, error) {
|
||||
devices := make([]*DevlinkDevice, 0, len(msgs))
|
||||
for _, m := range msgs {
|
||||
attrs, err := nl.ParseRouteAttr(m[nl.SizeofGenlmsg:])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dev := &DevlinkDevice{}
|
||||
if err = dev.parseAttributes(attrs); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
devices = append(devices, dev)
|
||||
}
|
||||
return devices, nil
|
||||
}
|
||||
|
||||
func eswitchStringToMode(modeName string) (uint16, error) {
|
||||
if modeName == "legacy" {
|
||||
return nl.DEVLINK_ESWITCH_MODE_LEGACY, nil
|
||||
} else if modeName == "switchdev" {
|
||||
return nl.DEVLINK_ESWITCH_MODE_SWITCHDEV, nil
|
||||
} else {
|
||||
return 0xffff, fmt.Errorf("invalid switchdev mode")
|
||||
}
|
||||
}
|
||||
|
||||
func parseEswitchMode(mode uint16) string {
|
||||
var eswitchMode = map[uint16]string{
|
||||
nl.DEVLINK_ESWITCH_MODE_LEGACY: "legacy",
|
||||
nl.DEVLINK_ESWITCH_MODE_SWITCHDEV: "switchdev",
|
||||
}
|
||||
if eswitchMode[mode] == "" {
|
||||
return "unknown"
|
||||
} else {
|
||||
return eswitchMode[mode]
|
||||
}
|
||||
}
|
||||
|
||||
func parseEswitchInlineMode(inlinemode uint8) string {
|
||||
var eswitchInlineMode = map[uint8]string{
|
||||
nl.DEVLINK_ESWITCH_INLINE_MODE_NONE: "none",
|
||||
nl.DEVLINK_ESWITCH_INLINE_MODE_LINK: "link",
|
||||
nl.DEVLINK_ESWITCH_INLINE_MODE_NETWORK: "network",
|
||||
nl.DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT: "transport",
|
||||
}
|
||||
if eswitchInlineMode[inlinemode] == "" {
|
||||
return "unknown"
|
||||
} else {
|
||||
return eswitchInlineMode[inlinemode]
|
||||
}
|
||||
}
|
||||
|
||||
func parseEswitchEncapMode(encapmode uint8) string {
|
||||
var eswitchEncapMode = map[uint8]string{
|
||||
nl.DEVLINK_ESWITCH_ENCAP_MODE_NONE: "disable",
|
||||
nl.DEVLINK_ESWITCH_ENCAP_MODE_BASIC: "enable",
|
||||
}
|
||||
if eswitchEncapMode[encapmode] == "" {
|
||||
return "unknown"
|
||||
} else {
|
||||
return eswitchEncapMode[encapmode]
|
||||
}
|
||||
}
|
||||
|
||||
func (d *DevlinkDevice) parseAttributes(attrs []syscall.NetlinkRouteAttr) error {
|
||||
for _, a := range attrs {
|
||||
switch a.Attr.Type {
|
||||
case nl.DEVLINK_ATTR_BUS_NAME:
|
||||
d.BusName = string(a.Value)
|
||||
case nl.DEVLINK_ATTR_DEV_NAME:
|
||||
d.DeviceName = string(a.Value)
|
||||
case nl.DEVLINK_ATTR_ESWITCH_MODE:
|
||||
d.Attrs.Eswitch.Mode = parseEswitchMode(native.Uint16(a.Value))
|
||||
case nl.DEVLINK_ATTR_ESWITCH_INLINE_MODE:
|
||||
d.Attrs.Eswitch.InlineMode = parseEswitchInlineMode(uint8(a.Value[0]))
|
||||
case nl.DEVLINK_ATTR_ESWITCH_ENCAP_MODE:
|
||||
d.Attrs.Eswitch.EncapMode = parseEswitchEncapMode(uint8(a.Value[0]))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (dev *DevlinkDevice) parseEswitchAttrs(msgs [][]byte) {
|
||||
m := msgs[0]
|
||||
attrs, err := nl.ParseRouteAttr(m[nl.SizeofGenlmsg:])
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
dev.parseAttributes(attrs)
|
||||
}
|
||||
|
||||
func (h *Handle) getEswitchAttrs(family *GenlFamily, dev *DevlinkDevice) {
|
||||
msg := &nl.Genlmsg{
|
||||
Command: nl.DEVLINK_CMD_ESWITCH_GET,
|
||||
Version: nl.GENL_DEVLINK_VERSION,
|
||||
}
|
||||
req := h.newNetlinkRequest(int(family.ID), unix.NLM_F_REQUEST|unix.NLM_F_ACK)
|
||||
req.AddData(msg)
|
||||
|
||||
b := make([]byte, len(dev.BusName))
|
||||
copy(b, dev.BusName)
|
||||
data := nl.NewRtAttr(nl.DEVLINK_ATTR_BUS_NAME, b)
|
||||
req.AddData(data)
|
||||
|
||||
b = make([]byte, len(dev.DeviceName))
|
||||
copy(b, dev.DeviceName)
|
||||
data = nl.NewRtAttr(nl.DEVLINK_ATTR_DEV_NAME, b)
|
||||
req.AddData(data)
|
||||
|
||||
msgs, err := req.Execute(unix.NETLINK_GENERIC, 0)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
dev.parseEswitchAttrs(msgs)
|
||||
}
|
||||
|
||||
// DevLinkGetDeviceList provides a pointer to devlink devices and nil error,
|
||||
// otherwise returns an error code.
|
||||
func (h *Handle) DevLinkGetDeviceList() ([]*DevlinkDevice, error) {
|
||||
f, err := h.GenlFamilyGet(nl.GENL_DEVLINK_NAME)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
msg := &nl.Genlmsg{
|
||||
Command: nl.DEVLINK_CMD_GET,
|
||||
Version: nl.GENL_DEVLINK_VERSION,
|
||||
}
|
||||
req := h.newNetlinkRequest(int(f.ID),
|
||||
unix.NLM_F_REQUEST|unix.NLM_F_ACK|unix.NLM_F_DUMP)
|
||||
req.AddData(msg)
|
||||
msgs, err := req.Execute(unix.NETLINK_GENERIC, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
devices, err := parseDevLinkDeviceList(msgs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, d := range devices {
|
||||
h.getEswitchAttrs(f, d)
|
||||
}
|
||||
return devices, nil
|
||||
}
|
||||
|
||||
// DevLinkGetDeviceList provides a pointer to devlink devices and nil error,
|
||||
// otherwise returns an error code.
|
||||
func DevLinkGetDeviceList() ([]*DevlinkDevice, error) {
|
||||
return pkgHandle.DevLinkGetDeviceList()
|
||||
}
|
||||
|
||||
func parseDevlinkDevice(msgs [][]byte) (*DevlinkDevice, error) {
|
||||
m := msgs[0]
|
||||
attrs, err := nl.ParseRouteAttr(m[nl.SizeofGenlmsg:])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dev := &DevlinkDevice{}
|
||||
if err = dev.parseAttributes(attrs); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return dev, nil
|
||||
}
|
||||
|
||||
func (h *Handle) createCmdReq(cmd uint8, bus string, device string) (*GenlFamily, *nl.NetlinkRequest, error) {
|
||||
f, err := h.GenlFamilyGet(nl.GENL_DEVLINK_NAME)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
msg := &nl.Genlmsg{
|
||||
Command: cmd,
|
||||
Version: nl.GENL_DEVLINK_VERSION,
|
||||
}
|
||||
req := h.newNetlinkRequest(int(f.ID),
|
||||
unix.NLM_F_REQUEST|unix.NLM_F_ACK)
|
||||
req.AddData(msg)
|
||||
|
||||
b := make([]byte, len(bus)+1)
|
||||
copy(b, bus)
|
||||
data := nl.NewRtAttr(nl.DEVLINK_ATTR_BUS_NAME, b)
|
||||
req.AddData(data)
|
||||
|
||||
b = make([]byte, len(device)+1)
|
||||
copy(b, device)
|
||||
data = nl.NewRtAttr(nl.DEVLINK_ATTR_DEV_NAME, b)
|
||||
req.AddData(data)
|
||||
|
||||
return f, req, nil
|
||||
}
|
||||
|
||||
// DevlinkGetDeviceByName provides a pointer to devlink device and nil error,
|
||||
// otherwise returns an error code.
|
||||
func (h *Handle) DevLinkGetDeviceByName(Bus string, Device string) (*DevlinkDevice, error) {
|
||||
f, req, err := h.createCmdReq(nl.DEVLINK_CMD_GET, Bus, Device)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
respmsg, err := req.Execute(unix.NETLINK_GENERIC, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dev, err := parseDevlinkDevice(respmsg)
|
||||
if err == nil {
|
||||
h.getEswitchAttrs(f, dev)
|
||||
}
|
||||
return dev, err
|
||||
}
|
||||
|
||||
// DevlinkGetDeviceByName provides a pointer to devlink device and nil error,
|
||||
// otherwise returns an error code.
|
||||
func DevLinkGetDeviceByName(Bus string, Device string) (*DevlinkDevice, error) {
|
||||
return pkgHandle.DevLinkGetDeviceByName(Bus, Device)
|
||||
}
|
||||
|
||||
// DevLinkSetEswitchMode sets eswitch mode if able to set successfully or
|
||||
// returns an error code.
|
||||
// Equivalent to: `devlink dev eswitch set $dev mode switchdev`
|
||||
// Equivalent to: `devlink dev eswitch set $dev mode legacy`
|
||||
func (h *Handle) DevLinkSetEswitchMode(Dev *DevlinkDevice, NewMode string) error {
|
||||
mode, err := eswitchStringToMode(NewMode)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, req, err := h.createCmdReq(nl.DEVLINK_CMD_ESWITCH_SET, Dev.BusName, Dev.DeviceName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
req.AddData(nl.NewRtAttr(nl.DEVLINK_ATTR_ESWITCH_MODE, nl.Uint16Attr(mode)))
|
||||
|
||||
_, err = req.Execute(unix.NETLINK_GENERIC, 0)
|
||||
return err
|
||||
}
|
||||
|
||||
// DevLinkSetEswitchMode sets eswitch mode if able to set successfully or
|
||||
// returns an error code.
|
||||
// Equivalent to: `devlink dev eswitch set $dev mode switchdev`
|
||||
// Equivalent to: `devlink dev eswitch set $dev mode legacy`
|
||||
func DevLinkSetEswitchMode(Dev *DevlinkDevice, NewMode string) error {
|
||||
return pkgHandle.DevLinkSetEswitchMode(Dev, NewMode)
|
||||
}
|
||||
63
vendor/github.com/vishvananda/netlink/filter.go
generated
vendored
63
vendor/github.com/vishvananda/netlink/filter.go
generated
vendored
@@ -135,6 +135,27 @@ func (action *BpfAction) Attrs() *ActionAttrs {
|
||||
return &action.ActionAttrs
|
||||
}
|
||||
|
||||
type ConnmarkAction struct {
|
||||
ActionAttrs
|
||||
Zone uint16
|
||||
}
|
||||
|
||||
func (action *ConnmarkAction) Type() string {
|
||||
return "connmark"
|
||||
}
|
||||
|
||||
func (action *ConnmarkAction) Attrs() *ActionAttrs {
|
||||
return &action.ActionAttrs
|
||||
}
|
||||
|
||||
func NewConnmarkAction() *ConnmarkAction {
|
||||
return &ConnmarkAction{
|
||||
ActionAttrs: ActionAttrs{
|
||||
Action: TC_ACT_PIPE,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
type MirredAct uint8
|
||||
|
||||
func (a MirredAct) String() string {
|
||||
@@ -182,47 +203,19 @@ func NewMirredAction(redirIndex int) *MirredAction {
|
||||
}
|
||||
}
|
||||
|
||||
// Sel of the U32 filters that contains multiple TcU32Key. This is the copy
|
||||
// and the frontend representation of nl.TcU32Sel. It is serialized into canonical
|
||||
// nl.TcU32Sel with the appropriate endianness.
|
||||
type TcU32Sel struct {
|
||||
Flags uint8
|
||||
Offshift uint8
|
||||
Nkeys uint8
|
||||
Pad uint8
|
||||
Offmask uint16
|
||||
Off uint16
|
||||
Offoff int16
|
||||
Hoff int16
|
||||
Hmask uint32
|
||||
Keys []TcU32Key
|
||||
}
|
||||
|
||||
// TcU32Key contained of Sel in the U32 filters. This is the copy and the frontend
|
||||
// representation of nl.TcU32Key. It is serialized into chanonical nl.TcU32Sel
|
||||
// with the appropriate endianness.
|
||||
type TcU32Key struct {
|
||||
Mask uint32
|
||||
Val uint32
|
||||
Off int32
|
||||
OffMask int32
|
||||
}
|
||||
|
||||
// U32 filters on many packet related properties
|
||||
type U32 struct {
|
||||
// MatchAll filters match all packets
|
||||
type MatchAll struct {
|
||||
FilterAttrs
|
||||
ClassId uint32
|
||||
RedirIndex int
|
||||
Sel *TcU32Sel
|
||||
Actions []Action
|
||||
ClassId uint32
|
||||
Actions []Action
|
||||
}
|
||||
|
||||
func (filter *U32) Attrs() *FilterAttrs {
|
||||
func (filter *MatchAll) Attrs() *FilterAttrs {
|
||||
return &filter.FilterAttrs
|
||||
}
|
||||
|
||||
func (filter *U32) Type() string {
|
||||
return "u32"
|
||||
func (filter *MatchAll) Type() string {
|
||||
return "matchall"
|
||||
}
|
||||
|
||||
type FilterFwAttrs struct {
|
||||
|
||||
163
vendor/github.com/vishvananda/netlink/filter_linux.go
generated
vendored
163
vendor/github.com/vishvananda/netlink/filter_linux.go
generated
vendored
@@ -6,7 +6,6 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"syscall"
|
||||
"unsafe"
|
||||
|
||||
"github.com/vishvananda/netlink/nl"
|
||||
"golang.org/x/sys/unix"
|
||||
@@ -20,6 +19,35 @@ const (
|
||||
TC_U32_EAT = nl.TC_U32_EAT
|
||||
)
|
||||
|
||||
// Sel of the U32 filters that contains multiple TcU32Key. This is the type
|
||||
// alias and the frontend representation of nl.TcU32Sel. It is serialized into
|
||||
// canonical nl.TcU32Sel with the appropriate endianness.
|
||||
type TcU32Sel = nl.TcU32Sel
|
||||
|
||||
// TcU32Key contained of Sel in the U32 filters. This is the type alias and the
|
||||
// frontend representation of nl.TcU32Key. It is serialized into chanonical
|
||||
// nl.TcU32Sel with the appropriate endianness.
|
||||
type TcU32Key = nl.TcU32Key
|
||||
|
||||
// U32 filters on many packet related properties
|
||||
type U32 struct {
|
||||
FilterAttrs
|
||||
ClassId uint32
|
||||
Divisor uint32 // Divisor MUST be power of 2.
|
||||
Hash uint32
|
||||
RedirIndex int
|
||||
Sel *TcU32Sel
|
||||
Actions []Action
|
||||
}
|
||||
|
||||
func (filter *U32) Attrs() *FilterAttrs {
|
||||
return &filter.FilterAttrs
|
||||
}
|
||||
|
||||
func (filter *U32) Type() string {
|
||||
return "u32"
|
||||
}
|
||||
|
||||
// Fw filter filters on firewall marks
|
||||
// NOTE: this is in filter_linux because it refers to nl.TcPolice which
|
||||
// is defined in nl/tc_linux.go
|
||||
@@ -140,8 +168,7 @@ func (h *Handle) FilterAdd(filter Filter) error {
|
||||
|
||||
switch filter := filter.(type) {
|
||||
case *U32:
|
||||
// Convert TcU32Sel into nl.TcU32Sel as it is without copy.
|
||||
sel := (*nl.TcU32Sel)(unsafe.Pointer(filter.Sel))
|
||||
sel := filter.Sel
|
||||
if sel == nil {
|
||||
// match all
|
||||
sel = &nl.TcU32Sel{
|
||||
@@ -168,11 +195,20 @@ func (h *Handle) FilterAdd(filter Filter) error {
|
||||
}
|
||||
}
|
||||
sel.Nkeys = uint8(len(sel.Keys))
|
||||
nl.NewRtAttrChild(options, nl.TCA_U32_SEL, sel.Serialize())
|
||||
options.AddRtAttr(nl.TCA_U32_SEL, sel.Serialize())
|
||||
if filter.ClassId != 0 {
|
||||
nl.NewRtAttrChild(options, nl.TCA_U32_CLASSID, nl.Uint32Attr(filter.ClassId))
|
||||
options.AddRtAttr(nl.TCA_U32_CLASSID, nl.Uint32Attr(filter.ClassId))
|
||||
}
|
||||
actionsAttr := nl.NewRtAttrChild(options, nl.TCA_U32_ACT, nil)
|
||||
if filter.Divisor != 0 {
|
||||
if (filter.Divisor-1)&filter.Divisor != 0 {
|
||||
return fmt.Errorf("illegal divisor %d. Must be a power of 2", filter.Divisor)
|
||||
}
|
||||
options.AddRtAttr(nl.TCA_U32_DIVISOR, nl.Uint32Attr(filter.Divisor))
|
||||
}
|
||||
if filter.Hash != 0 {
|
||||
options.AddRtAttr(nl.TCA_U32_HASH, nl.Uint32Attr(filter.Hash))
|
||||
}
|
||||
actionsAttr := options.AddRtAttr(nl.TCA_U32_ACT, nil)
|
||||
// backwards compatibility
|
||||
if filter.RedirIndex != 0 {
|
||||
filter.Actions = append([]Action{NewMirredAction(filter.RedirIndex)}, filter.Actions...)
|
||||
@@ -184,44 +220,52 @@ func (h *Handle) FilterAdd(filter Filter) error {
|
||||
if filter.Mask != 0 {
|
||||
b := make([]byte, 4)
|
||||
native.PutUint32(b, filter.Mask)
|
||||
nl.NewRtAttrChild(options, nl.TCA_FW_MASK, b)
|
||||
options.AddRtAttr(nl.TCA_FW_MASK, b)
|
||||
}
|
||||
if filter.InDev != "" {
|
||||
nl.NewRtAttrChild(options, nl.TCA_FW_INDEV, nl.ZeroTerminated(filter.InDev))
|
||||
options.AddRtAttr(nl.TCA_FW_INDEV, nl.ZeroTerminated(filter.InDev))
|
||||
}
|
||||
if (filter.Police != nl.TcPolice{}) {
|
||||
|
||||
police := nl.NewRtAttrChild(options, nl.TCA_FW_POLICE, nil)
|
||||
nl.NewRtAttrChild(police, nl.TCA_POLICE_TBF, filter.Police.Serialize())
|
||||
police := options.AddRtAttr(nl.TCA_FW_POLICE, nil)
|
||||
police.AddRtAttr(nl.TCA_POLICE_TBF, filter.Police.Serialize())
|
||||
if (filter.Police.Rate != nl.TcRateSpec{}) {
|
||||
payload := SerializeRtab(filter.Rtab)
|
||||
nl.NewRtAttrChild(police, nl.TCA_POLICE_RATE, payload)
|
||||
police.AddRtAttr(nl.TCA_POLICE_RATE, payload)
|
||||
}
|
||||
if (filter.Police.PeakRate != nl.TcRateSpec{}) {
|
||||
payload := SerializeRtab(filter.Ptab)
|
||||
nl.NewRtAttrChild(police, nl.TCA_POLICE_PEAKRATE, payload)
|
||||
police.AddRtAttr(nl.TCA_POLICE_PEAKRATE, payload)
|
||||
}
|
||||
}
|
||||
if filter.ClassId != 0 {
|
||||
b := make([]byte, 4)
|
||||
native.PutUint32(b, filter.ClassId)
|
||||
nl.NewRtAttrChild(options, nl.TCA_FW_CLASSID, b)
|
||||
options.AddRtAttr(nl.TCA_FW_CLASSID, b)
|
||||
}
|
||||
case *BpfFilter:
|
||||
var bpfFlags uint32
|
||||
if filter.ClassId != 0 {
|
||||
nl.NewRtAttrChild(options, nl.TCA_BPF_CLASSID, nl.Uint32Attr(filter.ClassId))
|
||||
options.AddRtAttr(nl.TCA_BPF_CLASSID, nl.Uint32Attr(filter.ClassId))
|
||||
}
|
||||
if filter.Fd >= 0 {
|
||||
nl.NewRtAttrChild(options, nl.TCA_BPF_FD, nl.Uint32Attr((uint32(filter.Fd))))
|
||||
options.AddRtAttr(nl.TCA_BPF_FD, nl.Uint32Attr((uint32(filter.Fd))))
|
||||
}
|
||||
if filter.Name != "" {
|
||||
nl.NewRtAttrChild(options, nl.TCA_BPF_NAME, nl.ZeroTerminated(filter.Name))
|
||||
options.AddRtAttr(nl.TCA_BPF_NAME, nl.ZeroTerminated(filter.Name))
|
||||
}
|
||||
if filter.DirectAction {
|
||||
bpfFlags |= nl.TCA_BPF_FLAG_ACT_DIRECT
|
||||
}
|
||||
nl.NewRtAttrChild(options, nl.TCA_BPF_FLAGS, nl.Uint32Attr(bpfFlags))
|
||||
options.AddRtAttr(nl.TCA_BPF_FLAGS, nl.Uint32Attr(bpfFlags))
|
||||
case *MatchAll:
|
||||
actionsAttr := options.AddRtAttr(nl.TCA_MATCHALL_ACT, nil)
|
||||
if err := EncodeActions(actionsAttr, filter.Actions); err != nil {
|
||||
return err
|
||||
}
|
||||
if filter.ClassId != 0 {
|
||||
options.AddRtAttr(nl.TCA_MATCHALL_CLASSID, nl.Uint32Attr(filter.ClassId))
|
||||
}
|
||||
}
|
||||
|
||||
req.AddData(options)
|
||||
@@ -288,6 +332,8 @@ func (h *Handle) FilterList(link Link, parent uint32) ([]Filter, error) {
|
||||
filter = &Fw{}
|
||||
case "bpf":
|
||||
filter = &BpfFilter{}
|
||||
case "matchall":
|
||||
filter = &MatchAll{}
|
||||
default:
|
||||
filter = &GenericFilter{FilterType: filterType}
|
||||
}
|
||||
@@ -312,6 +358,11 @@ func (h *Handle) FilterList(link Link, parent uint32) ([]Filter, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "matchall":
|
||||
detailed, err = parseMatchAllData(filter, data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
default:
|
||||
detailed = true
|
||||
}
|
||||
@@ -351,34 +402,44 @@ func EncodeActions(attr *nl.RtAttr, actions []Action) error {
|
||||
default:
|
||||
return fmt.Errorf("unknown action type %s", action.Type())
|
||||
case *MirredAction:
|
||||
table := nl.NewRtAttrChild(attr, tabIndex, nil)
|
||||
table := attr.AddRtAttr(tabIndex, nil)
|
||||
tabIndex++
|
||||
nl.NewRtAttrChild(table, nl.TCA_ACT_KIND, nl.ZeroTerminated("mirred"))
|
||||
aopts := nl.NewRtAttrChild(table, nl.TCA_ACT_OPTIONS, nil)
|
||||
table.AddRtAttr(nl.TCA_ACT_KIND, nl.ZeroTerminated("mirred"))
|
||||
aopts := table.AddRtAttr(nl.TCA_ACT_OPTIONS, nil)
|
||||
mirred := nl.TcMirred{
|
||||
Eaction: int32(action.MirredAction),
|
||||
Ifindex: uint32(action.Ifindex),
|
||||
}
|
||||
toTcGen(action.Attrs(), &mirred.TcGen)
|
||||
nl.NewRtAttrChild(aopts, nl.TCA_MIRRED_PARMS, mirred.Serialize())
|
||||
aopts.AddRtAttr(nl.TCA_MIRRED_PARMS, mirred.Serialize())
|
||||
case *ConnmarkAction:
|
||||
table := attr.AddRtAttr(tabIndex, nil)
|
||||
tabIndex++
|
||||
table.AddRtAttr(nl.TCA_ACT_KIND, nl.ZeroTerminated("connmark"))
|
||||
aopts := table.AddRtAttr(nl.TCA_ACT_OPTIONS, nil)
|
||||
connmark := nl.TcConnmark{
|
||||
Zone: action.Zone,
|
||||
}
|
||||
toTcGen(action.Attrs(), &connmark.TcGen)
|
||||
aopts.AddRtAttr(nl.TCA_CONNMARK_PARMS, connmark.Serialize())
|
||||
case *BpfAction:
|
||||
table := nl.NewRtAttrChild(attr, tabIndex, nil)
|
||||
table := attr.AddRtAttr(tabIndex, nil)
|
||||
tabIndex++
|
||||
nl.NewRtAttrChild(table, nl.TCA_ACT_KIND, nl.ZeroTerminated("bpf"))
|
||||
aopts := nl.NewRtAttrChild(table, nl.TCA_ACT_OPTIONS, nil)
|
||||
table.AddRtAttr(nl.TCA_ACT_KIND, nl.ZeroTerminated("bpf"))
|
||||
aopts := table.AddRtAttr(nl.TCA_ACT_OPTIONS, nil)
|
||||
gen := nl.TcGen{}
|
||||
toTcGen(action.Attrs(), &gen)
|
||||
nl.NewRtAttrChild(aopts, nl.TCA_ACT_BPF_PARMS, gen.Serialize())
|
||||
nl.NewRtAttrChild(aopts, nl.TCA_ACT_BPF_FD, nl.Uint32Attr(uint32(action.Fd)))
|
||||
nl.NewRtAttrChild(aopts, nl.TCA_ACT_BPF_NAME, nl.ZeroTerminated(action.Name))
|
||||
aopts.AddRtAttr(nl.TCA_ACT_BPF_PARMS, gen.Serialize())
|
||||
aopts.AddRtAttr(nl.TCA_ACT_BPF_FD, nl.Uint32Attr(uint32(action.Fd)))
|
||||
aopts.AddRtAttr(nl.TCA_ACT_BPF_NAME, nl.ZeroTerminated(action.Name))
|
||||
case *GenericAction:
|
||||
table := nl.NewRtAttrChild(attr, tabIndex, nil)
|
||||
table := attr.AddRtAttr(tabIndex, nil)
|
||||
tabIndex++
|
||||
nl.NewRtAttrChild(table, nl.TCA_ACT_KIND, nl.ZeroTerminated("gact"))
|
||||
aopts := nl.NewRtAttrChild(table, nl.TCA_ACT_OPTIONS, nil)
|
||||
table.AddRtAttr(nl.TCA_ACT_KIND, nl.ZeroTerminated("gact"))
|
||||
aopts := table.AddRtAttr(nl.TCA_ACT_OPTIONS, nil)
|
||||
gen := nl.TcGen{}
|
||||
toTcGen(action.Attrs(), &gen)
|
||||
nl.NewRtAttrChild(aopts, nl.TCA_GACT_PARMS, gen.Serialize())
|
||||
aopts.AddRtAttr(nl.TCA_GACT_PARMS, gen.Serialize())
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@@ -404,6 +465,8 @@ func parseActions(tables []syscall.NetlinkRouteAttr) ([]Action, error) {
|
||||
action = &MirredAction{}
|
||||
case "bpf":
|
||||
action = &BpfAction{}
|
||||
case "connmark":
|
||||
action = &ConnmarkAction{}
|
||||
case "gact":
|
||||
action = &GenericAction{}
|
||||
default:
|
||||
@@ -420,8 +483,8 @@ func parseActions(tables []syscall.NetlinkRouteAttr) ([]Action, error) {
|
||||
switch adatum.Attr.Type {
|
||||
case nl.TCA_MIRRED_PARMS:
|
||||
mirred := *nl.DeserializeTcMirred(adatum.Value)
|
||||
toAttrs(&mirred.TcGen, action.Attrs())
|
||||
action.(*MirredAction).ActionAttrs = ActionAttrs{}
|
||||
toAttrs(&mirred.TcGen, action.Attrs())
|
||||
action.(*MirredAction).Ifindex = int(mirred.Ifindex)
|
||||
action.(*MirredAction).MirredAction = MirredAct(mirred.Eaction)
|
||||
}
|
||||
@@ -435,6 +498,14 @@ func parseActions(tables []syscall.NetlinkRouteAttr) ([]Action, error) {
|
||||
case nl.TCA_ACT_BPF_NAME:
|
||||
action.(*BpfAction).Name = string(adatum.Value[:len(adatum.Value)-1])
|
||||
}
|
||||
case "connmark":
|
||||
switch adatum.Attr.Type {
|
||||
case nl.TCA_CONNMARK_PARMS:
|
||||
connmark := *nl.DeserializeTcConnmark(adatum.Value)
|
||||
action.(*ConnmarkAction).ActionAttrs = ActionAttrs{}
|
||||
toAttrs(&connmark.TcGen, action.Attrs())
|
||||
action.(*ConnmarkAction).Zone = connmark.Zone
|
||||
}
|
||||
case "gact":
|
||||
switch adatum.Attr.Type {
|
||||
case nl.TCA_GACT_PARMS:
|
||||
@@ -459,7 +530,7 @@ func parseU32Data(filter Filter, data []syscall.NetlinkRouteAttr) (bool, error)
|
||||
case nl.TCA_U32_SEL:
|
||||
detailed = true
|
||||
sel := nl.DeserializeTcU32Sel(datum.Value)
|
||||
u32.Sel = (*TcU32Sel)(unsafe.Pointer(sel))
|
||||
u32.Sel = sel
|
||||
if native != networkOrder {
|
||||
// Handle the endianness of attributes
|
||||
u32.Sel.Offmask = native.Uint16(htons(sel.Offmask))
|
||||
@@ -485,6 +556,10 @@ func parseU32Data(filter Filter, data []syscall.NetlinkRouteAttr) (bool, error)
|
||||
}
|
||||
case nl.TCA_U32_CLASSID:
|
||||
u32.ClassId = native.Uint32(datum.Value)
|
||||
case nl.TCA_U32_DIVISOR:
|
||||
u32.Divisor = native.Uint32(datum.Value)
|
||||
case nl.TCA_U32_HASH:
|
||||
u32.Hash = native.Uint32(datum.Value)
|
||||
}
|
||||
}
|
||||
return detailed, nil
|
||||
@@ -541,6 +616,28 @@ func parseBpfData(filter Filter, data []syscall.NetlinkRouteAttr) (bool, error)
|
||||
return detailed, nil
|
||||
}
|
||||
|
||||
func parseMatchAllData(filter Filter, data []syscall.NetlinkRouteAttr) (bool, error) {
|
||||
native = nl.NativeEndian()
|
||||
matchall := filter.(*MatchAll)
|
||||
detailed := true
|
||||
for _, datum := range data {
|
||||
switch datum.Attr.Type {
|
||||
case nl.TCA_MATCHALL_CLASSID:
|
||||
matchall.ClassId = native.Uint32(datum.Value[0:4])
|
||||
case nl.TCA_MATCHALL_ACT:
|
||||
tables, err := nl.ParseRouteAttr(datum.Value)
|
||||
if err != nil {
|
||||
return detailed, err
|
||||
}
|
||||
matchall.Actions, err = parseActions(tables)
|
||||
if err != nil {
|
||||
return detailed, err
|
||||
}
|
||||
}
|
||||
}
|
||||
return detailed, nil
|
||||
}
|
||||
|
||||
func AlignToAtm(size uint) uint {
|
||||
var linksize, cells int
|
||||
cells = int(size / nl.ATM_CELL_PAYLOAD)
|
||||
|
||||
43
vendor/github.com/vishvananda/netlink/fou.go
generated
vendored
43
vendor/github.com/vishvananda/netlink/fou.go
generated
vendored
@@ -1,7 +1,6 @@
|
||||
package netlink
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"errors"
|
||||
)
|
||||
|
||||
@@ -20,45 +19,3 @@ type Fou struct {
|
||||
Protocol int
|
||||
EncapType int
|
||||
}
|
||||
|
||||
func deserializeFouMsg(msg []byte) (Fou, error) {
|
||||
// we'll skip to byte 4 to first attribute
|
||||
msg = msg[3:]
|
||||
var shift int
|
||||
fou := Fou{}
|
||||
|
||||
for {
|
||||
// attribute header is at least 16 bits
|
||||
if len(msg) < 4 {
|
||||
return fou, ErrAttrHeaderTruncated
|
||||
}
|
||||
|
||||
lgt := int(binary.BigEndian.Uint16(msg[0:2]))
|
||||
if len(msg) < lgt+4 {
|
||||
return fou, ErrAttrBodyTruncated
|
||||
}
|
||||
attr := binary.BigEndian.Uint16(msg[2:4])
|
||||
|
||||
shift = lgt + 3
|
||||
switch attr {
|
||||
case FOU_ATTR_AF:
|
||||
fou.Family = int(msg[5])
|
||||
case FOU_ATTR_PORT:
|
||||
fou.Port = int(binary.BigEndian.Uint16(msg[5:7]))
|
||||
// port is 2 bytes
|
||||
shift = lgt + 2
|
||||
case FOU_ATTR_IPPROTO:
|
||||
fou.Protocol = int(msg[5])
|
||||
case FOU_ATTR_TYPE:
|
||||
fou.EncapType = int(msg[5])
|
||||
}
|
||||
|
||||
msg = msg[shift:]
|
||||
|
||||
if len(msg) < 4 {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return fou, nil
|
||||
}
|
||||
|
||||
48
vendor/github.com/vishvananda/netlink/fou_linux.go
generated
vendored
48
vendor/github.com/vishvananda/netlink/fou_linux.go
generated
vendored
@@ -90,11 +90,7 @@ func (h *Handle) FouAdd(f Fou) error {
|
||||
req.AddRawData(raw)
|
||||
|
||||
_, err = req.Execute(unix.NETLINK_GENERIC, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
|
||||
func FouDel(f Fou) error {
|
||||
@@ -171,3 +167,45 @@ func (h *Handle) FouList(fam int) ([]Fou, error) {
|
||||
|
||||
return fous, nil
|
||||
}
|
||||
|
||||
func deserializeFouMsg(msg []byte) (Fou, error) {
|
||||
// we'll skip to byte 4 to first attribute
|
||||
msg = msg[3:]
|
||||
var shift int
|
||||
fou := Fou{}
|
||||
|
||||
for {
|
||||
// attribute header is at least 16 bits
|
||||
if len(msg) < 4 {
|
||||
return fou, ErrAttrHeaderTruncated
|
||||
}
|
||||
|
||||
lgt := int(binary.BigEndian.Uint16(msg[0:2]))
|
||||
if len(msg) < lgt+4 {
|
||||
return fou, ErrAttrBodyTruncated
|
||||
}
|
||||
attr := binary.BigEndian.Uint16(msg[2:4])
|
||||
|
||||
shift = lgt + 3
|
||||
switch attr {
|
||||
case FOU_ATTR_AF:
|
||||
fou.Family = int(msg[5])
|
||||
case FOU_ATTR_PORT:
|
||||
fou.Port = int(binary.BigEndian.Uint16(msg[5:7]))
|
||||
// port is 2 bytes
|
||||
shift = lgt + 2
|
||||
case FOU_ATTR_IPPROTO:
|
||||
fou.Protocol = int(msg[5])
|
||||
case FOU_ATTR_TYPE:
|
||||
fou.EncapType = int(msg[5])
|
||||
}
|
||||
|
||||
msg = msg[shift:]
|
||||
|
||||
if len(msg) < 4 {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return fou, nil
|
||||
}
|
||||
|
||||
3
vendor/github.com/vishvananda/netlink/genetlink_linux.go
generated
vendored
3
vendor/github.com/vishvananda/netlink/genetlink_linux.go
generated
vendored
@@ -157,6 +157,9 @@ func (h *Handle) GenlFamilyGet(name string) (*GenlFamily, error) {
|
||||
return nil, err
|
||||
}
|
||||
families, err := parseFamilies(msgs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(families) != 1 {
|
||||
return nil, fmt.Errorf("invalid response for GENL_CTRL_CMD_GETFAMILY")
|
||||
}
|
||||
|
||||
2
vendor/github.com/vishvananda/netlink/handle_linux.go
generated
vendored
2
vendor/github.com/vishvananda/netlink/handle_linux.go
generated
vendored
@@ -91,7 +91,7 @@ func (h *Handle) GetSocketReceiveBufferSize() ([]int, error) {
|
||||
return results, nil
|
||||
}
|
||||
|
||||
// NewHandle returns a netlink handle on the network namespace
|
||||
// NewHandleAt returns a netlink handle on the network namespace
|
||||
// specified by ns. If ns=netns.None(), current network namespace
|
||||
// will be assumed
|
||||
func NewHandleAt(ns netns.NsHandle, nlFamilies ...int) (*Handle, error) {
|
||||
|
||||
36
vendor/github.com/vishvananda/netlink/handle_unspecified.go
generated
vendored
36
vendor/github.com/vishvananda/netlink/handle_unspecified.go
generated
vendored
@@ -220,3 +220,39 @@ func (h *Handle) NeighList(linkIndex, family int) ([]Neigh, error) {
|
||||
func (h *Handle) NeighProxyList(linkIndex, family int) ([]Neigh, error) {
|
||||
return nil, ErrNotImplemented
|
||||
}
|
||||
|
||||
func (h *Handle) RouteAdd(route *Route) error {
|
||||
return ErrNotImplemented
|
||||
}
|
||||
|
||||
func (h *Handle) RouteDel(route *Route) error {
|
||||
return ErrNotImplemented
|
||||
}
|
||||
|
||||
func (h *Handle) RouteGet(destination net.IP) ([]Route, error) {
|
||||
return nil, ErrNotImplemented
|
||||
}
|
||||
|
||||
func (h *Handle) RouteList(link Link, family int) ([]Route, error) {
|
||||
return nil, ErrNotImplemented
|
||||
}
|
||||
|
||||
func (h *Handle) RouteListFiltered(family int, filter *Route, filterMask uint64) ([]Route, error) {
|
||||
return nil, ErrNotImplemented
|
||||
}
|
||||
|
||||
func (h *Handle) RouteReplace(route *Route) error {
|
||||
return ErrNotImplemented
|
||||
}
|
||||
|
||||
func (h *Handle) RuleAdd(rule *Rule) error {
|
||||
return ErrNotImplemented
|
||||
}
|
||||
|
||||
func (h *Handle) RuleDel(rule *Rule) error {
|
||||
return ErrNotImplemented
|
||||
}
|
||||
|
||||
func (h *Handle) RuleList(family int) ([]Rule, error) {
|
||||
return nil, ErrNotImplemented
|
||||
}
|
||||
|
||||
98
vendor/github.com/vishvananda/netlink/ioctl_linux.go
generated
vendored
Normal file
98
vendor/github.com/vishvananda/netlink/ioctl_linux.go
generated
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
package netlink
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
// ioctl for statistics.
|
||||
const (
|
||||
// ETHTOOL_GSSET_INFO gets string set info
|
||||
ETHTOOL_GSSET_INFO = 0x00000037
|
||||
// SIOCETHTOOL is Ethtool interface
|
||||
SIOCETHTOOL = 0x8946
|
||||
// ETHTOOL_GSTRINGS gets specified string set
|
||||
ETHTOOL_GSTRINGS = 0x0000001b
|
||||
// ETHTOOL_GSTATS gets NIC-specific statistics
|
||||
ETHTOOL_GSTATS = 0x0000001d
|
||||
)
|
||||
|
||||
// string set id.
|
||||
const (
|
||||
// ETH_SS_TEST is self-test result names, for use with %ETHTOOL_TEST
|
||||
ETH_SS_TEST = iota
|
||||
// ETH_SS_STATS statistic names, for use with %ETHTOOL_GSTATS
|
||||
ETH_SS_STATS
|
||||
// ETH_SS_PRIV_FLAGS are driver private flag names
|
||||
ETH_SS_PRIV_FLAGS
|
||||
// _ETH_SS_NTUPLE_FILTERS is deprecated
|
||||
_ETH_SS_NTUPLE_FILTERS
|
||||
// ETH_SS_FEATURES are device feature names
|
||||
ETH_SS_FEATURES
|
||||
// ETH_SS_RSS_HASH_FUNCS is RSS hush function names
|
||||
ETH_SS_RSS_HASH_FUNCS
|
||||
)
|
||||
|
||||
// IfreqSlave is a struct for ioctl bond manipulation syscalls.
|
||||
// It is used to assign slave to bond interface with Name.
|
||||
type IfreqSlave struct {
|
||||
Name [unix.IFNAMSIZ]byte
|
||||
Slave [unix.IFNAMSIZ]byte
|
||||
}
|
||||
|
||||
// Ifreq is a struct for ioctl ethernet manipulation syscalls.
|
||||
type Ifreq struct {
|
||||
Name [unix.IFNAMSIZ]byte
|
||||
Data uintptr
|
||||
}
|
||||
|
||||
// ethtoolSset is a string set information
|
||||
type ethtoolSset struct {
|
||||
cmd uint32
|
||||
reserved uint32
|
||||
mask uint64
|
||||
data [1]uint32
|
||||
}
|
||||
|
||||
// ethtoolGstrings is string set for data tagging
|
||||
type ethtoolGstrings struct {
|
||||
cmd uint32
|
||||
stringSet uint32
|
||||
length uint32
|
||||
data [32]byte
|
||||
}
|
||||
|
||||
type ethtoolStats struct {
|
||||
cmd uint32
|
||||
nStats uint32
|
||||
data [1]uint64
|
||||
}
|
||||
|
||||
// newIocltSlaveReq returns filled IfreqSlave with proper interface names
|
||||
// It is used by ioctl to assign slave to bond master
|
||||
func newIocltSlaveReq(slave, master string) *IfreqSlave {
|
||||
ifreq := &IfreqSlave{}
|
||||
copy(ifreq.Name[:unix.IFNAMSIZ-1], master)
|
||||
copy(ifreq.Slave[:unix.IFNAMSIZ-1], slave)
|
||||
return ifreq
|
||||
}
|
||||
|
||||
// newIocltStringSetReq creates request to get interface string set
|
||||
func newIocltStringSetReq(linkName string) (*Ifreq, *ethtoolSset) {
|
||||
e := ðtoolSset{
|
||||
cmd: ETHTOOL_GSSET_INFO,
|
||||
mask: 1 << ETH_SS_STATS,
|
||||
}
|
||||
|
||||
ifreq := &Ifreq{Data: uintptr(unsafe.Pointer(e))}
|
||||
copy(ifreq.Name[:unix.IFNAMSIZ-1], linkName)
|
||||
return ifreq, e
|
||||
}
|
||||
|
||||
// getSocketUDP returns file descriptor to new UDP socket
|
||||
// It is used for communication with ioctl interface.
|
||||
func getSocketUDP() (int, error) {
|
||||
return syscall.Socket(unix.AF_INET, unix.SOCK_DGRAM, 0)
|
||||
}
|
||||
105
vendor/github.com/vishvananda/netlink/link.go
generated
vendored
105
vendor/github.com/vishvananda/netlink/link.go
generated
vendored
@@ -41,6 +41,20 @@ type LinkAttrs struct {
|
||||
NetNsID int
|
||||
NumTxQueues int
|
||||
NumRxQueues int
|
||||
GSOMaxSize uint32
|
||||
GSOMaxSegs uint32
|
||||
Vfs []VfInfo // virtual functions available on link
|
||||
}
|
||||
|
||||
// VfInfo represents configuration of virtual function
|
||||
type VfInfo struct {
|
||||
ID int
|
||||
Mac net.HardwareAddr
|
||||
Vlan int
|
||||
Qos int
|
||||
TxRate int
|
||||
Spoofchk bool
|
||||
LinkState uint32
|
||||
}
|
||||
|
||||
// LinkOperState represents the values of the IFLA_OPERSTATE link
|
||||
@@ -223,6 +237,7 @@ type Bridge struct {
|
||||
LinkAttrs
|
||||
MulticastSnooping *bool
|
||||
HelloTime *uint32
|
||||
VlanFiltering *bool
|
||||
}
|
||||
|
||||
func (bridge *Bridge) Attrs() *LinkAttrs {
|
||||
@@ -236,7 +251,8 @@ func (bridge *Bridge) Type() string {
|
||||
// Vlan links have ParentIndex set in their Attrs()
|
||||
type Vlan struct {
|
||||
LinkAttrs
|
||||
VlanId int
|
||||
VlanId int
|
||||
VlanProtocol VlanProtocol
|
||||
}
|
||||
|
||||
func (vlan *Vlan) Attrs() *LinkAttrs {
|
||||
@@ -262,6 +278,9 @@ const (
|
||||
type Macvlan struct {
|
||||
LinkAttrs
|
||||
Mode MacvlanMode
|
||||
|
||||
// MACAddrs is only populated for Macvlan SOURCE links
|
||||
MACAddrs []net.HardwareAddr
|
||||
}
|
||||
|
||||
func (macvlan *Macvlan) Attrs() *LinkAttrs {
|
||||
@@ -287,10 +306,13 @@ type TuntapFlag uint16
|
||||
// Tuntap links created via /dev/tun/tap, but can be destroyed via netlink
|
||||
type Tuntap struct {
|
||||
LinkAttrs
|
||||
Mode TuntapMode
|
||||
Flags TuntapFlag
|
||||
Queues int
|
||||
Fds []*os.File
|
||||
Mode TuntapMode
|
||||
Flags TuntapFlag
|
||||
NonPersist bool
|
||||
Queues int
|
||||
Fds []*os.File
|
||||
Owner uint32
|
||||
Group uint32
|
||||
}
|
||||
|
||||
func (tuntap *Tuntap) Attrs() *LinkAttrs {
|
||||
@@ -386,6 +408,43 @@ func (ipvlan *IPVlan) Type() string {
|
||||
return "ipvlan"
|
||||
}
|
||||
|
||||
// VlanProtocol type
|
||||
type VlanProtocol int
|
||||
|
||||
func (p VlanProtocol) String() string {
|
||||
s, ok := VlanProtocolToString[p]
|
||||
if !ok {
|
||||
return fmt.Sprintf("VlanProtocol(%d)", p)
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
// StringToVlanProtocol returns vlan protocol, or unknown is the s is invalid.
|
||||
func StringToVlanProtocol(s string) VlanProtocol {
|
||||
mode, ok := StringToVlanProtocolMap[s]
|
||||
if !ok {
|
||||
return VLAN_PROTOCOL_UNKNOWN
|
||||
}
|
||||
return mode
|
||||
}
|
||||
|
||||
// VlanProtocol possible values
|
||||
const (
|
||||
VLAN_PROTOCOL_UNKNOWN VlanProtocol = 0
|
||||
VLAN_PROTOCOL_8021Q VlanProtocol = 0x8100
|
||||
VLAN_PROTOCOL_8021AD VlanProtocol = 0x88A8
|
||||
)
|
||||
|
||||
var VlanProtocolToString = map[VlanProtocol]string{
|
||||
VLAN_PROTOCOL_8021Q: "802.1q",
|
||||
VLAN_PROTOCOL_8021AD: "802.1ad",
|
||||
}
|
||||
|
||||
var StringToVlanProtocolMap = map[string]VlanProtocol{
|
||||
"802.1q": VLAN_PROTOCOL_8021Q,
|
||||
"802.1ad": VLAN_PROTOCOL_8021AD,
|
||||
}
|
||||
|
||||
// BondMode type
|
||||
type BondMode int
|
||||
|
||||
@@ -397,7 +456,7 @@ func (b BondMode) String() string {
|
||||
return s
|
||||
}
|
||||
|
||||
// StringToBondMode returns bond mode, or uknonw is the s is invalid.
|
||||
// StringToBondMode returns bond mode, or unknown is the s is invalid.
|
||||
func StringToBondMode(s string) BondMode {
|
||||
mode, ok := StringToBondModeMap[s]
|
||||
if !ok {
|
||||
@@ -488,7 +547,7 @@ func (b BondXmitHashPolicy) String() string {
|
||||
return s
|
||||
}
|
||||
|
||||
// StringToBondXmitHashPolicy returns bond lacp arte, or uknonw is the s is invalid.
|
||||
// StringToBondXmitHashPolicy returns bond lacp arte, or unknown is the s is invalid.
|
||||
func StringToBondXmitHashPolicy(s string) BondXmitHashPolicy {
|
||||
lacp, ok := StringToBondXmitHashPolicyMap[s]
|
||||
if !ok {
|
||||
@@ -533,7 +592,7 @@ func (b BondLacpRate) String() string {
|
||||
return s
|
||||
}
|
||||
|
||||
// StringToBondLacpRate returns bond lacp arte, or uknonw is the s is invalid.
|
||||
// StringToBondLacpRate returns bond lacp arte, or unknown is the s is invalid.
|
||||
func StringToBondLacpRate(s string) BondLacpRate {
|
||||
lacp, ok := StringToBondLacpRateMap[s]
|
||||
if !ok {
|
||||
@@ -702,6 +761,9 @@ func (gretap *Gretap) Attrs() *LinkAttrs {
|
||||
}
|
||||
|
||||
func (gretap *Gretap) Type() string {
|
||||
if gretap.Local.To4() == nil {
|
||||
return "ip6gretap"
|
||||
}
|
||||
return "gretap"
|
||||
}
|
||||
|
||||
@@ -763,7 +825,10 @@ func (vti *Vti) Attrs() *LinkAttrs {
|
||||
return &vti.LinkAttrs
|
||||
}
|
||||
|
||||
func (iptun *Vti) Type() string {
|
||||
func (vti *Vti) Type() string {
|
||||
if vti.Local.To4() == nil {
|
||||
return "vti6"
|
||||
}
|
||||
return "vti"
|
||||
}
|
||||
|
||||
@@ -790,6 +855,9 @@ func (gretun *Gretun) Attrs() *LinkAttrs {
|
||||
}
|
||||
|
||||
func (gretun *Gretun) Type() string {
|
||||
if gretun.Local.To4() == nil {
|
||||
return "ip6gre"
|
||||
}
|
||||
return "gre"
|
||||
}
|
||||
|
||||
@@ -822,11 +890,26 @@ func (gtp *GTP) Type() string {
|
||||
return "gtp"
|
||||
}
|
||||
|
||||
// Virtual XFRM Interfaces
|
||||
// Named "xfrmi" to prevent confusion with XFRM objects
|
||||
type Xfrmi struct {
|
||||
LinkAttrs
|
||||
Ifid uint32
|
||||
}
|
||||
|
||||
func (xfrm *Xfrmi) Attrs() *LinkAttrs {
|
||||
return &xfrm.LinkAttrs
|
||||
}
|
||||
|
||||
func (xfrm *Xfrmi) Type() string {
|
||||
return "xfrm"
|
||||
}
|
||||
|
||||
// iproute2 supported devices;
|
||||
// vlan | veth | vcan | dummy | ifb | macvlan | macvtap |
|
||||
// bridge | bond | ipoib | ip6tnl | ipip | sit | vxlan |
|
||||
// gre | gretap | ip6gre | ip6gretap | vti | nlmon |
|
||||
// bond_slave | ipvlan
|
||||
// gre | gretap | ip6gre | ip6gretap | vti | vti6 | nlmon |
|
||||
// bond_slave | ipvlan | xfrm
|
||||
|
||||
// LinkNotFoundError wraps the various not found errors when
|
||||
// getting/reading links. This is intended for better error
|
||||
|
||||
912
vendor/github.com/vishvananda/netlink/link_linux.go
generated
vendored
912
vendor/github.com/vishvananda/netlink/link_linux.go
generated
vendored
File diff suppressed because it is too large
Load Diff
8
vendor/github.com/vishvananda/netlink/neigh.go
generated
vendored
8
vendor/github.com/vishvananda/netlink/neigh.go
generated
vendored
@@ -15,9 +15,17 @@ type Neigh struct {
|
||||
IP net.IP
|
||||
HardwareAddr net.HardwareAddr
|
||||
LLIPAddr net.IP //Used in the case of NHRP
|
||||
Vlan int
|
||||
VNI int
|
||||
}
|
||||
|
||||
// String returns $ip/$hwaddr $label
|
||||
func (neigh *Neigh) String() string {
|
||||
return fmt.Sprintf("%s %s", neigh.IP, neigh.HardwareAddr)
|
||||
}
|
||||
|
||||
// NeighUpdate is sent when a neighbor changes - type is RTM_NEWNEIGH or RTM_DELNEIGH.
|
||||
type NeighUpdate struct {
|
||||
Type uint16
|
||||
Neigh
|
||||
}
|
||||
|
||||
167
vendor/github.com/vishvananda/netlink/neigh_linux.go
generated
vendored
167
vendor/github.com/vishvananda/netlink/neigh_linux.go
generated
vendored
@@ -2,9 +2,11 @@ package netlink
|
||||
|
||||
import (
|
||||
"net"
|
||||
"syscall"
|
||||
"unsafe"
|
||||
|
||||
"github.com/vishvananda/netlink/nl"
|
||||
"github.com/vishvananda/netns"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
@@ -43,6 +45,7 @@ const (
|
||||
NTF_ROUTER = 0x80
|
||||
)
|
||||
|
||||
// Ndmsg is for adding, removing or receiving information about a neighbor table entry
|
||||
type Ndmsg struct {
|
||||
Family uint8
|
||||
Index uint32
|
||||
@@ -160,45 +163,63 @@ func neighHandle(neigh *Neigh, req *nl.NetlinkRequest) error {
|
||||
req.AddData(hwData)
|
||||
}
|
||||
|
||||
if neigh.Vlan != 0 {
|
||||
vlanData := nl.NewRtAttr(NDA_VLAN, nl.Uint16Attr(uint16(neigh.Vlan)))
|
||||
req.AddData(vlanData)
|
||||
}
|
||||
|
||||
if neigh.VNI != 0 {
|
||||
vniData := nl.NewRtAttr(NDA_VNI, nl.Uint32Attr(uint32(neigh.VNI)))
|
||||
req.AddData(vniData)
|
||||
}
|
||||
|
||||
_, err := req.Execute(unix.NETLINK_ROUTE, 0)
|
||||
return err
|
||||
}
|
||||
|
||||
// NeighList gets a list of IP-MAC mappings in the system (ARP table).
|
||||
// NeighList returns a list of IP-MAC mappings in the system (ARP table).
|
||||
// Equivalent to: `ip neighbor show`.
|
||||
// The list can be filtered by link and ip family.
|
||||
func NeighList(linkIndex, family int) ([]Neigh, error) {
|
||||
return pkgHandle.NeighList(linkIndex, family)
|
||||
}
|
||||
|
||||
// NeighProxyList gets a list of neighbor proxies in the system.
|
||||
// NeighProxyList returns a list of neighbor proxies in the system.
|
||||
// Equivalent to: `ip neighbor show proxy`.
|
||||
// The list can be filtered by link and ip family.
|
||||
func NeighProxyList(linkIndex, family int) ([]Neigh, error) {
|
||||
return pkgHandle.NeighProxyList(linkIndex, family)
|
||||
}
|
||||
|
||||
// NeighList gets a list of IP-MAC mappings in the system (ARP table).
|
||||
// NeighList returns a list of IP-MAC mappings in the system (ARP table).
|
||||
// Equivalent to: `ip neighbor show`.
|
||||
// The list can be filtered by link and ip family.
|
||||
func (h *Handle) NeighList(linkIndex, family int) ([]Neigh, error) {
|
||||
return h.neighList(linkIndex, family, 0)
|
||||
return h.NeighListExecute(Ndmsg{
|
||||
Family: uint8(family),
|
||||
Index: uint32(linkIndex),
|
||||
})
|
||||
}
|
||||
|
||||
// NeighProxyList gets a list of neighbor proxies in the system.
|
||||
// NeighProxyList returns a list of neighbor proxies in the system.
|
||||
// Equivalent to: `ip neighbor show proxy`.
|
||||
// The list can be filtered by link, ip family.
|
||||
func (h *Handle) NeighProxyList(linkIndex, family int) ([]Neigh, error) {
|
||||
return h.neighList(linkIndex, family, NTF_PROXY)
|
||||
}
|
||||
|
||||
func (h *Handle) neighList(linkIndex, family, flags int) ([]Neigh, error) {
|
||||
req := h.newNetlinkRequest(unix.RTM_GETNEIGH, unix.NLM_F_DUMP)
|
||||
msg := Ndmsg{
|
||||
return h.NeighListExecute(Ndmsg{
|
||||
Family: uint8(family),
|
||||
Index: uint32(linkIndex),
|
||||
Flags: uint8(flags),
|
||||
}
|
||||
Flags: NTF_PROXY,
|
||||
})
|
||||
}
|
||||
|
||||
// NeighListExecute returns a list of neighbour entries filtered by link, ip family, flag and state.
|
||||
func NeighListExecute(msg Ndmsg) ([]Neigh, error) {
|
||||
return pkgHandle.NeighListExecute(msg)
|
||||
}
|
||||
|
||||
// NeighListExecute returns a list of neighbour entries filtered by link, ip family, flag and state.
|
||||
func (h *Handle) NeighListExecute(msg Ndmsg) ([]Neigh, error) {
|
||||
req := h.newNetlinkRequest(unix.RTM_GETNEIGH, unix.NLM_F_DUMP)
|
||||
req.AddData(&msg)
|
||||
|
||||
msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWNEIGH)
|
||||
@@ -209,7 +230,7 @@ func (h *Handle) neighList(linkIndex, family, flags int) ([]Neigh, error) {
|
||||
var res []Neigh
|
||||
for _, m := range msgs {
|
||||
ndm := deserializeNdmsg(m)
|
||||
if linkIndex != 0 && int(ndm.Index) != linkIndex {
|
||||
if msg.Index != 0 && ndm.Index != msg.Index {
|
||||
// Ignore messages from other interfaces
|
||||
continue
|
||||
}
|
||||
@@ -241,14 +262,6 @@ func NeighDeserialize(m []byte) (*Neigh, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// This should be cached for perfomance
|
||||
// once per table dump
|
||||
link, err := LinkByIndex(neigh.LinkIndex)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
encapType := link.Attrs().EncapType
|
||||
|
||||
for _, attr := range attrs {
|
||||
switch attr.Attr.Type {
|
||||
case NDA_DST:
|
||||
@@ -258,18 +271,116 @@ func NeighDeserialize(m []byte) (*Neigh, error) {
|
||||
// #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
|
||||
// #define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
|
||||
attrLen := attr.Attr.Len - unix.SizeofRtAttr
|
||||
if attrLen == 4 && (encapType == "ipip" ||
|
||||
encapType == "sit" ||
|
||||
encapType == "gre") {
|
||||
if attrLen == 4 {
|
||||
neigh.LLIPAddr = net.IP(attr.Value)
|
||||
} else if attrLen == 16 &&
|
||||
encapType == "tunnel6" {
|
||||
neigh.IP = net.IP(attr.Value)
|
||||
} else if attrLen == 16 {
|
||||
// Can be IPv6 or FireWire HWAddr
|
||||
link, err := LinkByIndex(neigh.LinkIndex)
|
||||
if err == nil && link.Attrs().EncapType == "tunnel6" {
|
||||
neigh.IP = net.IP(attr.Value)
|
||||
} else {
|
||||
neigh.HardwareAddr = net.HardwareAddr(attr.Value)
|
||||
}
|
||||
} else {
|
||||
neigh.HardwareAddr = net.HardwareAddr(attr.Value)
|
||||
}
|
||||
case NDA_VLAN:
|
||||
neigh.Vlan = int(native.Uint16(attr.Value[0:2]))
|
||||
case NDA_VNI:
|
||||
neigh.VNI = int(native.Uint32(attr.Value[0:4]))
|
||||
}
|
||||
}
|
||||
|
||||
return &neigh, nil
|
||||
}
|
||||
|
||||
// NeighSubscribe takes a chan down which notifications will be sent
|
||||
// when neighbors are added or deleted. Close the 'done' chan to stop subscription.
|
||||
func NeighSubscribe(ch chan<- NeighUpdate, done <-chan struct{}) error {
|
||||
return neighSubscribeAt(netns.None(), netns.None(), ch, done, nil, false)
|
||||
}
|
||||
|
||||
// NeighSubscribeAt works like NeighSubscribe plus it allows the caller
|
||||
// to choose the network namespace in which to subscribe (ns).
|
||||
func NeighSubscribeAt(ns netns.NsHandle, ch chan<- NeighUpdate, done <-chan struct{}) error {
|
||||
return neighSubscribeAt(ns, netns.None(), ch, done, nil, false)
|
||||
}
|
||||
|
||||
// NeighSubscribeOptions contains a set of options to use with
|
||||
// NeighSubscribeWithOptions.
|
||||
type NeighSubscribeOptions struct {
|
||||
Namespace *netns.NsHandle
|
||||
ErrorCallback func(error)
|
||||
ListExisting bool
|
||||
}
|
||||
|
||||
// NeighSubscribeWithOptions work like NeighSubscribe but enable to
|
||||
// provide additional options to modify the behavior. Currently, the
|
||||
// namespace can be provided as well as an error callback.
|
||||
func NeighSubscribeWithOptions(ch chan<- NeighUpdate, done <-chan struct{}, options NeighSubscribeOptions) error {
|
||||
if options.Namespace == nil {
|
||||
none := netns.None()
|
||||
options.Namespace = &none
|
||||
}
|
||||
return neighSubscribeAt(*options.Namespace, netns.None(), ch, done, options.ErrorCallback, options.ListExisting)
|
||||
}
|
||||
|
||||
func neighSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- NeighUpdate, done <-chan struct{}, cberr func(error), listExisting bool) error {
|
||||
s, err := nl.SubscribeAt(newNs, curNs, unix.NETLINK_ROUTE, unix.RTNLGRP_NEIGH)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if done != nil {
|
||||
go func() {
|
||||
<-done
|
||||
s.Close()
|
||||
}()
|
||||
}
|
||||
if listExisting {
|
||||
req := pkgHandle.newNetlinkRequest(unix.RTM_GETNEIGH,
|
||||
unix.NLM_F_DUMP)
|
||||
infmsg := nl.NewIfInfomsg(unix.AF_UNSPEC)
|
||||
req.AddData(infmsg)
|
||||
if err := s.Send(req); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
go func() {
|
||||
defer close(ch)
|
||||
for {
|
||||
msgs, err := s.Receive()
|
||||
if err != nil {
|
||||
if cberr != nil {
|
||||
cberr(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
for _, m := range msgs {
|
||||
if m.Header.Type == unix.NLMSG_DONE {
|
||||
continue
|
||||
}
|
||||
if m.Header.Type == unix.NLMSG_ERROR {
|
||||
native := nl.NativeEndian()
|
||||
error := int32(native.Uint32(m.Data[0:4]))
|
||||
if error == 0 {
|
||||
continue
|
||||
}
|
||||
if cberr != nil {
|
||||
cberr(syscall.Errno(-error))
|
||||
}
|
||||
return
|
||||
}
|
||||
neigh, err := NeighDeserialize(m.Data)
|
||||
if err != nil {
|
||||
if cberr != nil {
|
||||
cberr(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
ch <- NeighUpdate{Type: m.Header.Type, Neigh: *neigh}
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
3
vendor/github.com/vishvananda/netlink/netlink.go
generated
vendored
3
vendor/github.com/vishvananda/netlink/netlink.go
generated
vendored
@@ -27,7 +27,8 @@ func ParseIPNet(s string) (*net.IPNet, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &net.IPNet{IP: ip, Mask: ipNet.Mask}, nil
|
||||
ipNet.IP = ip
|
||||
return ipNet, nil
|
||||
}
|
||||
|
||||
// NewIPNet generates an IPNet from an ip address using a netmask of 32 or 128.
|
||||
|
||||
141
vendor/github.com/vishvananda/netlink/netns_linux.go
generated
vendored
Normal file
141
vendor/github.com/vishvananda/netlink/netns_linux.go
generated
vendored
Normal file
@@ -0,0 +1,141 @@
|
||||
package netlink
|
||||
|
||||
// Network namespace ID functions
|
||||
//
|
||||
// The kernel has a weird concept called the network namespace ID.
|
||||
// This is different from the file reference in proc (and any bind-mounted
|
||||
// namespaces, etc.)
|
||||
//
|
||||
// Instead, namespaces can be assigned a numeric ID at any time. Once set,
|
||||
// the ID is fixed. The ID can either be set manually by the user, or
|
||||
// automatically, triggered by certain kernel actions. The most common kernel
|
||||
// action that triggers namespace ID creation is moving one end of a veth pair
|
||||
// in to that namespace.
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/vishvananda/netlink/nl"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
// These can be replaced by the values from sys/unix when it is next released.
|
||||
const (
|
||||
_ = iota
|
||||
NETNSA_NSID
|
||||
NETNSA_PID
|
||||
NETNSA_FD
|
||||
)
|
||||
|
||||
// GetNetNsIdByPid looks up the network namespace ID for a given pid (really thread id).
|
||||
// Returns -1 if the namespace does not have an ID set.
|
||||
func (h *Handle) GetNetNsIdByPid(pid int) (int, error) {
|
||||
return h.getNetNsId(NETNSA_PID, uint32(pid))
|
||||
}
|
||||
|
||||
// GetNetNsIdByPid looks up the network namespace ID for a given pid (really thread id).
|
||||
// Returns -1 if the namespace does not have an ID set.
|
||||
func GetNetNsIdByPid(pid int) (int, error) {
|
||||
return pkgHandle.GetNetNsIdByPid(pid)
|
||||
}
|
||||
|
||||
// SetNetNSIdByPid sets the ID of the network namespace for a given pid (really thread id).
|
||||
// The ID can only be set for namespaces without an ID already set.
|
||||
func (h *Handle) SetNetNsIdByPid(pid, nsid int) error {
|
||||
return h.setNetNsId(NETNSA_PID, uint32(pid), uint32(nsid))
|
||||
}
|
||||
|
||||
// SetNetNSIdByPid sets the ID of the network namespace for a given pid (really thread id).
|
||||
// The ID can only be set for namespaces without an ID already set.
|
||||
func SetNetNsIdByPid(pid, nsid int) error {
|
||||
return pkgHandle.SetNetNsIdByPid(pid, nsid)
|
||||
}
|
||||
|
||||
// GetNetNsIdByFd looks up the network namespace ID for a given fd.
|
||||
// fd must be an open file descriptor to a namespace file.
|
||||
// Returns -1 if the namespace does not have an ID set.
|
||||
func (h *Handle) GetNetNsIdByFd(fd int) (int, error) {
|
||||
return h.getNetNsId(NETNSA_FD, uint32(fd))
|
||||
}
|
||||
|
||||
// GetNetNsIdByFd looks up the network namespace ID for a given fd.
|
||||
// fd must be an open file descriptor to a namespace file.
|
||||
// Returns -1 if the namespace does not have an ID set.
|
||||
func GetNetNsIdByFd(fd int) (int, error) {
|
||||
return pkgHandle.GetNetNsIdByFd(fd)
|
||||
}
|
||||
|
||||
// SetNetNSIdByFd sets the ID of the network namespace for a given fd.
|
||||
// fd must be an open file descriptor to a namespace file.
|
||||
// The ID can only be set for namespaces without an ID already set.
|
||||
func (h *Handle) SetNetNsIdByFd(fd, nsid int) error {
|
||||
return h.setNetNsId(NETNSA_FD, uint32(fd), uint32(nsid))
|
||||
}
|
||||
|
||||
// SetNetNSIdByFd sets the ID of the network namespace for a given fd.
|
||||
// fd must be an open file descriptor to a namespace file.
|
||||
// The ID can only be set for namespaces without an ID already set.
|
||||
func SetNetNsIdByFd(fd, nsid int) error {
|
||||
return pkgHandle.SetNetNsIdByFd(fd, nsid)
|
||||
}
|
||||
|
||||
// getNetNsId requests the netnsid for a given type-val pair
|
||||
// type should be either NETNSA_PID or NETNSA_FD
|
||||
func (h *Handle) getNetNsId(attrType int, val uint32) (int, error) {
|
||||
req := h.newNetlinkRequest(unix.RTM_GETNSID, unix.NLM_F_REQUEST)
|
||||
|
||||
rtgen := nl.NewRtGenMsg()
|
||||
req.AddData(rtgen)
|
||||
|
||||
b := make([]byte, 4, 4)
|
||||
native.PutUint32(b, val)
|
||||
attr := nl.NewRtAttr(attrType, b)
|
||||
req.AddData(attr)
|
||||
|
||||
msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWNSID)
|
||||
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
for _, m := range msgs {
|
||||
msg := nl.DeserializeRtGenMsg(m)
|
||||
|
||||
attrs, err := nl.ParseRouteAttr(m[msg.Len():])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
for _, attr := range attrs {
|
||||
switch attr.Attr.Type {
|
||||
case NETNSA_NSID:
|
||||
return int(int32(native.Uint32(attr.Value))), nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0, fmt.Errorf("unexpected empty result")
|
||||
}
|
||||
|
||||
// setNetNsId sets the netnsid for a given type-val pair
|
||||
// type should be either NETNSA_PID or NETNSA_FD
|
||||
// The ID can only be set for namespaces without an ID already set
|
||||
func (h *Handle) setNetNsId(attrType int, val uint32, newnsid uint32) error {
|
||||
req := h.newNetlinkRequest(unix.RTM_NEWNSID, unix.NLM_F_REQUEST|unix.NLM_F_ACK)
|
||||
|
||||
rtgen := nl.NewRtGenMsg()
|
||||
req.AddData(rtgen)
|
||||
|
||||
b := make([]byte, 4, 4)
|
||||
native.PutUint32(b, val)
|
||||
attr := nl.NewRtAttr(attrType, b)
|
||||
req.AddData(attr)
|
||||
|
||||
b1 := make([]byte, 4, 4)
|
||||
native.PutUint32(b1, newnsid)
|
||||
attr1 := nl.NewRtAttr(NETNSA_NSID, b1)
|
||||
req.AddData(attr1)
|
||||
|
||||
_, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWNSID)
|
||||
return err
|
||||
}
|
||||
19
vendor/github.com/vishvananda/netlink/netns_unspecified.go
generated
vendored
Normal file
19
vendor/github.com/vishvananda/netlink/netns_unspecified.go
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
// +build !linux
|
||||
|
||||
package netlink
|
||||
|
||||
func GetNetNsIdByPid(pid int) (int, error) {
|
||||
return 0, ErrNotImplemented
|
||||
}
|
||||
|
||||
func SetNetNsIdByPid(pid, nsid int) error {
|
||||
return ErrNotImplemented
|
||||
}
|
||||
|
||||
func GetNetNsIdByFd(fd int) (int, error) {
|
||||
return 0, ErrNotImplemented
|
||||
}
|
||||
|
||||
func SetNetNsIdByFd(fd, nsid int) error {
|
||||
return ErrNotImplemented
|
||||
}
|
||||
4
vendor/github.com/vishvananda/netlink/nl/bridge_linux.go
generated
vendored
4
vendor/github.com/vishvananda/netlink/nl/bridge_linux.go
generated
vendored
@@ -11,8 +11,8 @@ const (
|
||||
|
||||
/* Bridge Flags */
|
||||
const (
|
||||
BRIDGE_FLAGS_MASTER = iota /* Bridge command to/from master */
|
||||
BRIDGE_FLAGS_SELF /* Bridge command to/from lowerdev */
|
||||
BRIDGE_FLAGS_MASTER = iota + 1 /* Bridge command to/from master */
|
||||
BRIDGE_FLAGS_SELF /* Bridge command to/from lowerdev */
|
||||
)
|
||||
|
||||
/* Bridge management nested attributes
|
||||
|
||||
29
vendor/github.com/vishvananda/netlink/nl/conntrack_linux.go
generated
vendored
29
vendor/github.com/vishvananda/netlink/nl/conntrack_linux.go
generated
vendored
@@ -76,12 +76,14 @@ const (
|
||||
// __CTA_MAX
|
||||
// };
|
||||
const (
|
||||
CTA_TUPLE_ORIG = 1
|
||||
CTA_TUPLE_REPLY = 2
|
||||
CTA_STATUS = 3
|
||||
CTA_TIMEOUT = 7
|
||||
CTA_MARK = 8
|
||||
CTA_PROTOINFO = 4
|
||||
CTA_TUPLE_ORIG = 1
|
||||
CTA_TUPLE_REPLY = 2
|
||||
CTA_STATUS = 3
|
||||
CTA_TIMEOUT = 7
|
||||
CTA_MARK = 8
|
||||
CTA_COUNTERS_ORIG = 9
|
||||
CTA_COUNTERS_REPLY = 10
|
||||
CTA_PROTOINFO = 4
|
||||
)
|
||||
|
||||
// enum ctattr_tuple {
|
||||
@@ -163,6 +165,21 @@ const (
|
||||
CTA_PROTOINFO_TCP_FLAGS_REPLY = 5
|
||||
)
|
||||
|
||||
// enum ctattr_counters {
|
||||
// CTA_COUNTERS_UNSPEC,
|
||||
// CTA_COUNTERS_PACKETS, /* 64bit counters */
|
||||
// CTA_COUNTERS_BYTES, /* 64bit counters */
|
||||
// CTA_COUNTERS32_PACKETS, /* old 32bit counters, unused */
|
||||
// CTA_COUNTERS32_BYTES, /* old 32bit counters, unused */
|
||||
// CTA_COUNTERS_PAD,
|
||||
// __CTA_COUNTERS_M
|
||||
// };
|
||||
// #define CTA_COUNTERS_MAX (__CTA_COUNTERS_MAX - 1)
|
||||
const (
|
||||
CTA_COUNTERS_PACKETS = 1
|
||||
CTA_COUNTERS_BYTES = 2
|
||||
)
|
||||
|
||||
// /* General form of address family dependent message.
|
||||
// */
|
||||
// struct nfgenmsg {
|
||||
|
||||
40
vendor/github.com/vishvananda/netlink/nl/devlink_linux.go
generated
vendored
Normal file
40
vendor/github.com/vishvananda/netlink/nl/devlink_linux.go
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
package nl
|
||||
|
||||
// All the following constants are coming from:
|
||||
// https://github.com/torvalds/linux/blob/master/include/uapi/linux/devlink.h
|
||||
|
||||
const (
|
||||
GENL_DEVLINK_VERSION = 1
|
||||
GENL_DEVLINK_NAME = "devlink"
|
||||
)
|
||||
|
||||
const (
|
||||
DEVLINK_CMD_GET = 1
|
||||
DEVLINK_CMD_ESWITCH_GET = 29
|
||||
DEVLINK_CMD_ESWITCH_SET = 30
|
||||
)
|
||||
|
||||
const (
|
||||
DEVLINK_ATTR_BUS_NAME = 1
|
||||
DEVLINK_ATTR_DEV_NAME = 2
|
||||
DEVLINK_ATTR_ESWITCH_MODE = 25
|
||||
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 26
|
||||
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 62
|
||||
)
|
||||
|
||||
const (
|
||||
DEVLINK_ESWITCH_MODE_LEGACY = 0
|
||||
DEVLINK_ESWITCH_MODE_SWITCHDEV = 1
|
||||
)
|
||||
|
||||
const (
|
||||
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0
|
||||
DEVLINK_ESWITCH_INLINE_MODE_LINK = 1
|
||||
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 2
|
||||
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 3
|
||||
)
|
||||
|
||||
const (
|
||||
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0
|
||||
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 1
|
||||
)
|
||||
91
vendor/github.com/vishvananda/netlink/nl/link_linux.go
generated
vendored
91
vendor/github.com/vishvananda/netlink/nl/link_linux.go
generated
vendored
@@ -2,35 +2,10 @@ package nl
|
||||
|
||||
import (
|
||||
"unsafe"
|
||||
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
const (
|
||||
DEFAULT_CHANGE = 0xFFFFFFFF
|
||||
// doesn't exist in syscall
|
||||
IFLA_VFINFO_LIST = unix.IFLA_IFALIAS + 1 + iota
|
||||
IFLA_STATS64
|
||||
IFLA_VF_PORTS
|
||||
IFLA_PORT_SELF
|
||||
IFLA_AF_SPEC
|
||||
IFLA_GROUP
|
||||
IFLA_NET_NS_FD
|
||||
IFLA_EXT_MASK
|
||||
IFLA_PROMISCUITY
|
||||
IFLA_NUM_TX_QUEUES
|
||||
IFLA_NUM_RX_QUEUES
|
||||
IFLA_CARRIER
|
||||
IFLA_PHYS_PORT_ID
|
||||
IFLA_CARRIER_CHANGES
|
||||
IFLA_PHYS_SWITCH_ID
|
||||
IFLA_LINK_NETNSID
|
||||
IFLA_PHYS_PORT_NAME
|
||||
IFLA_PROTO_DOWN
|
||||
IFLA_GSO_MAX_SEGS
|
||||
IFLA_GSO_MAX_SIZE
|
||||
IFLA_PAD
|
||||
IFLA_XDP
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -119,6 +94,10 @@ const (
|
||||
IFLA_MACVLAN_UNSPEC = iota
|
||||
IFLA_MACVLAN_MODE
|
||||
IFLA_MACVLAN_FLAGS
|
||||
IFLA_MACVLAN_MACADDR_MODE
|
||||
IFLA_MACVLAN_MACADDR
|
||||
IFLA_MACVLAN_MACADDR_DATA
|
||||
IFLA_MACVLAN_MACADDR_COUNT
|
||||
IFLA_MACVLAN_MAX = IFLA_MACVLAN_FLAGS
|
||||
)
|
||||
|
||||
@@ -130,6 +109,13 @@ const (
|
||||
MACVLAN_MODE_SOURCE = 16
|
||||
)
|
||||
|
||||
const (
|
||||
MACVLAN_MACADDR_ADD = iota
|
||||
MACVLAN_MACADDR_DEL
|
||||
MACVLAN_MACADDR_FLUSH
|
||||
MACVLAN_MACADDR_SET
|
||||
)
|
||||
|
||||
const (
|
||||
IFLA_BOND_UNSPEC = iota
|
||||
IFLA_BOND_MODE
|
||||
@@ -231,9 +217,11 @@ const (
|
||||
IFLA_VF_RSS_QUERY_EN /* RSS Redirection Table and Hash Key query
|
||||
* on/off switch
|
||||
*/
|
||||
IFLA_VF_STATS /* network device statistics */
|
||||
IFLA_VF_TRUST /* Trust state of VF */
|
||||
IFLA_VF_MAX = IFLA_VF_TRUST
|
||||
IFLA_VF_STATS /* network device statistics */
|
||||
IFLA_VF_TRUST /* Trust state of VF */
|
||||
IFLA_VF_IB_NODE_GUID /* VF Infiniband node GUID */
|
||||
IFLA_VF_IB_PORT_GUID /* VF Infiniband port GUID */
|
||||
IFLA_VF_MAX = IFLA_VF_IB_PORT_GUID
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -262,6 +250,7 @@ const (
|
||||
SizeofVfLinkState = 0x08
|
||||
SizeofVfRssQueryEn = 0x08
|
||||
SizeofVfTrust = 0x08
|
||||
SizeofVfGUID = 0x10
|
||||
)
|
||||
|
||||
// struct ifla_vf_mac {
|
||||
@@ -444,6 +433,30 @@ func (msg *VfTrust) Serialize() []byte {
|
||||
return (*(*[SizeofVfTrust]byte)(unsafe.Pointer(msg)))[:]
|
||||
}
|
||||
|
||||
// struct ifla_vf_guid {
|
||||
// __u32 vf;
|
||||
// __u32 rsvd;
|
||||
// __u64 guid;
|
||||
// };
|
||||
|
||||
type VfGUID struct {
|
||||
Vf uint32
|
||||
Rsvd uint32
|
||||
GUID uint64
|
||||
}
|
||||
|
||||
func (msg *VfGUID) Len() int {
|
||||
return SizeofVfGUID
|
||||
}
|
||||
|
||||
func DeserializeVfGUID(b []byte) *VfGUID {
|
||||
return (*VfGUID)(unsafe.Pointer(&b[0:SizeofVfGUID][0]))
|
||||
}
|
||||
|
||||
func (msg *VfGUID) Serialize() []byte {
|
||||
return (*(*[SizeofVfGUID]byte)(unsafe.Pointer(msg)))[:]
|
||||
}
|
||||
|
||||
const (
|
||||
XDP_FLAGS_UPDATE_IF_NOEXIST = 1 << iota
|
||||
XDP_FLAGS_SKB_MODE
|
||||
@@ -560,3 +573,25 @@ const (
|
||||
GTP_ROLE_GGSN = iota
|
||||
GTP_ROLE_SGSN
|
||||
)
|
||||
|
||||
const (
|
||||
IFLA_XFRM_UNSPEC = iota
|
||||
IFLA_XFRM_LINK
|
||||
IFLA_XFRM_IF_ID
|
||||
|
||||
IFLA_XFRM_MAX = iota - 1
|
||||
)
|
||||
|
||||
const (
|
||||
IFLA_TUN_UNSPEC = iota
|
||||
IFLA_TUN_OWNER
|
||||
IFLA_TUN_GROUP
|
||||
IFLA_TUN_TYPE
|
||||
IFLA_TUN_PI
|
||||
IFLA_TUN_VNET_HDR
|
||||
IFLA_TUN_PERSIST
|
||||
IFLA_TUN_MULTI_QUEUE
|
||||
IFLA_TUN_NUM_QUEUES
|
||||
IFLA_TUN_NUM_DISABLED_QUEUES
|
||||
IFLA_TUN_MAX = IFLA_TUN_NUM_DISABLED_QUEUES
|
||||
)
|
||||
|
||||
38
vendor/github.com/vishvananda/netlink/nl/nl_linux.go
generated
vendored
38
vendor/github.com/vishvananda/netlink/nl/nl_linux.go
generated
vendored
@@ -22,6 +22,10 @@ const (
|
||||
FAMILY_V4 = unix.AF_INET
|
||||
FAMILY_V6 = unix.AF_INET6
|
||||
FAMILY_MPLS = AF_MPLS
|
||||
// Arbitrary set value (greater than default 4k) to allow receiving
|
||||
// from kernel more verbose messages e.g. for statistics,
|
||||
// tc rules or filters, or other more memory requiring data.
|
||||
RECEIVE_BUFFER_SIZE = 65536
|
||||
)
|
||||
|
||||
// SupportedNlFamilies contains the list of netlink families this netlink package supports
|
||||
@@ -42,7 +46,7 @@ func GetIPFamily(ip net.IP) int {
|
||||
|
||||
var nativeEndian binary.ByteOrder
|
||||
|
||||
// Get native endianness for the system
|
||||
// NativeEndian gets native endianness for the system
|
||||
func NativeEndian() binary.ByteOrder {
|
||||
if nativeEndian == nil {
|
||||
var x uint32 = 0x01020304
|
||||
@@ -271,15 +275,22 @@ func NewRtAttr(attrType int, data []byte) *RtAttr {
|
||||
}
|
||||
}
|
||||
|
||||
// Create a new RtAttr obj anc add it as a child of an existing object
|
||||
// NewRtAttrChild adds an RtAttr as a child to the parent and returns the new attribute
|
||||
//
|
||||
// Deprecated: Use AddRtAttr() on the parent object
|
||||
func NewRtAttrChild(parent *RtAttr, attrType int, data []byte) *RtAttr {
|
||||
return parent.AddRtAttr(attrType, data)
|
||||
}
|
||||
|
||||
// AddRtAttr adds an RtAttr as a child and returns the new attribute
|
||||
func (a *RtAttr) AddRtAttr(attrType int, data []byte) *RtAttr {
|
||||
attr := NewRtAttr(attrType, data)
|
||||
parent.children = append(parent.children, attr)
|
||||
a.children = append(a.children, attr)
|
||||
return attr
|
||||
}
|
||||
|
||||
// AddChild adds an existing RtAttr as a child.
|
||||
func (a *RtAttr) AddChild(attr *RtAttr) {
|
||||
// AddChild adds an existing NetlinkRequestData as a child.
|
||||
func (a *RtAttr) AddChild(attr NetlinkRequestData) {
|
||||
a.children = append(a.children, attr)
|
||||
}
|
||||
|
||||
@@ -360,16 +371,12 @@ func (req *NetlinkRequest) Serialize() []byte {
|
||||
}
|
||||
|
||||
func (req *NetlinkRequest) AddData(data NetlinkRequestData) {
|
||||
if data != nil {
|
||||
req.Data = append(req.Data, data)
|
||||
}
|
||||
req.Data = append(req.Data, data)
|
||||
}
|
||||
|
||||
// AddRawData adds raw bytes to the end of the NetlinkRequest object during serialization
|
||||
func (req *NetlinkRequest) AddRawData(data []byte) {
|
||||
if data != nil {
|
||||
req.RawData = append(req.RawData, data...)
|
||||
}
|
||||
req.RawData = append(req.RawData, data...)
|
||||
}
|
||||
|
||||
// Execute the request against a the given sockType.
|
||||
@@ -615,16 +622,17 @@ func (s *NetlinkSocket) Receive() ([]syscall.NetlinkMessage, error) {
|
||||
if fd < 0 {
|
||||
return nil, fmt.Errorf("Receive called on a closed socket")
|
||||
}
|
||||
rb := make([]byte, unix.Getpagesize())
|
||||
nr, _, err := unix.Recvfrom(fd, rb, 0)
|
||||
var rb [RECEIVE_BUFFER_SIZE]byte
|
||||
nr, _, err := unix.Recvfrom(fd, rb[:], 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if nr < unix.NLMSG_HDRLEN {
|
||||
return nil, fmt.Errorf("Got short response from netlink")
|
||||
}
|
||||
rb = rb[:nr]
|
||||
return syscall.ParseNetlinkMessage(rb)
|
||||
rb2 := make([]byte, nr)
|
||||
copy(rb2, rb[:nr])
|
||||
return syscall.ParseNetlinkMessage(rb2)
|
||||
}
|
||||
|
||||
// SetSendTimeout allows to set a send timeout on the socket
|
||||
|
||||
31
vendor/github.com/vishvananda/netlink/nl/rdma_link_linux.go
generated
vendored
Normal file
31
vendor/github.com/vishvananda/netlink/nl/rdma_link_linux.go
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
package nl
|
||||
|
||||
const (
|
||||
RDMA_NL_GET_CLIENT_SHIFT = 10
|
||||
)
|
||||
|
||||
const (
|
||||
RDMA_NL_NLDEV = 5
|
||||
)
|
||||
|
||||
const (
|
||||
RDMA_NLDEV_CMD_GET = 1
|
||||
RDMA_NLDEV_CMD_SET = 2
|
||||
)
|
||||
|
||||
const (
|
||||
RDMA_NLDEV_ATTR_DEV_INDEX = 1
|
||||
RDMA_NLDEV_ATTR_DEV_NAME = 2
|
||||
RDMA_NLDEV_ATTR_PORT_INDEX = 3
|
||||
RDMA_NLDEV_ATTR_CAP_FLAGS = 4
|
||||
RDMA_NLDEV_ATTR_FW_VERSION = 5
|
||||
RDMA_NLDEV_ATTR_NODE_GUID = 6
|
||||
RDMA_NLDEV_ATTR_SYS_IMAGE_GUID = 7
|
||||
RDMA_NLDEV_ATTR_SUBNET_PREFIX = 8
|
||||
RDMA_NLDEV_ATTR_LID = 9
|
||||
RDMA_NLDEV_ATTR_SM_LID = 10
|
||||
RDMA_NLDEV_ATTR_LMC = 11
|
||||
RDMA_NLDEV_ATTR_PORT_STATE = 12
|
||||
RDMA_NLDEV_ATTR_PORT_PHYS_STATE = 13
|
||||
RDMA_NLDEV_ATTR_DEV_NODE_TYPE = 14
|
||||
)
|
||||
26
vendor/github.com/vishvananda/netlink/nl/route_linux.go
generated
vendored
26
vendor/github.com/vishvananda/netlink/nl/route_linux.go
generated
vendored
@@ -79,3 +79,29 @@ func (msg *RtNexthop) Serialize() []byte {
|
||||
}
|
||||
return buf
|
||||
}
|
||||
|
||||
type RtGenMsg struct {
|
||||
unix.RtGenmsg
|
||||
}
|
||||
|
||||
func NewRtGenMsg() *RtGenMsg {
|
||||
return &RtGenMsg{
|
||||
RtGenmsg: unix.RtGenmsg{
|
||||
Family: unix.AF_UNSPEC,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (msg *RtGenMsg) Len() int {
|
||||
return rtaAlignOf(unix.SizeofRtGenmsg)
|
||||
}
|
||||
|
||||
func DeserializeRtGenMsg(b []byte) *RtGenMsg {
|
||||
return &RtGenMsg{RtGenmsg: unix.RtGenmsg{Family: b[0]}}
|
||||
}
|
||||
|
||||
func (msg *RtGenMsg) Serialize() []byte {
|
||||
out := make([]byte, msg.Len())
|
||||
out[0] = msg.Family
|
||||
return out
|
||||
}
|
||||
|
||||
43
vendor/github.com/vishvananda/netlink/nl/seg6_linux.go
generated
vendored
43
vendor/github.com/vishvananda/netlink/nl/seg6_linux.go
generated
vendored
@@ -99,6 +99,49 @@ func DecodeSEG6Encap(buf []byte) (int, []net.IP, error) {
|
||||
return mode, srh.Segments, nil
|
||||
}
|
||||
|
||||
func DecodeSEG6Srh(buf []byte) ([]net.IP, error) {
|
||||
native := NativeEndian()
|
||||
srh := IPv6SrHdr{
|
||||
nextHdr: buf[0],
|
||||
hdrLen: buf[1],
|
||||
routingType: buf[2],
|
||||
segmentsLeft: buf[3],
|
||||
firstSegment: buf[4],
|
||||
flags: buf[5],
|
||||
reserved: native.Uint16(buf[6:8]),
|
||||
}
|
||||
buf = buf[8:]
|
||||
if len(buf)%16 != 0 {
|
||||
err := fmt.Errorf("DecodeSEG6Srh: error parsing Segment List (buf len: %d)", len(buf))
|
||||
return nil, err
|
||||
}
|
||||
for len(buf) > 0 {
|
||||
srh.Segments = append(srh.Segments, net.IP(buf[:16]))
|
||||
buf = buf[16:]
|
||||
}
|
||||
return srh.Segments, nil
|
||||
}
|
||||
func EncodeSEG6Srh(segments []net.IP) ([]byte, error) {
|
||||
nsegs := len(segments) // nsegs: number of segments
|
||||
if nsegs == 0 {
|
||||
return nil, errors.New("EncodeSEG6Srh: No Segments")
|
||||
}
|
||||
b := make([]byte, 8, 8+len(segments)*16)
|
||||
native := NativeEndian()
|
||||
b[0] = 0 // srh.nextHdr (0 when calling netlink)
|
||||
b[1] = uint8(16 * nsegs >> 3) // srh.hdrLen (in 8-octets unit)
|
||||
b[2] = IPV6_SRCRT_TYPE_4 // srh.routingType (assigned by IANA)
|
||||
b[3] = uint8(nsegs - 1) // srh.segmentsLeft
|
||||
b[4] = uint8(nsegs - 1) // srh.firstSegment
|
||||
b[5] = 0 // srh.flags (SR6_FLAG1_HMAC for srh_hmac)
|
||||
// srh.reserved: Defined as "Tag" in draft-ietf-6man-segment-routing-header-07
|
||||
native.PutUint16(b[6:], 0) // srh.reserved
|
||||
for _, netIP := range segments {
|
||||
b = append(b, netIP...) // srh.Segments
|
||||
}
|
||||
return b, nil
|
||||
}
|
||||
|
||||
// Helper functions
|
||||
func SEG6EncapModeString(mode int) string {
|
||||
switch mode {
|
||||
|
||||
76
vendor/github.com/vishvananda/netlink/nl/seg6local_linux.go
generated
vendored
Normal file
76
vendor/github.com/vishvananda/netlink/nl/seg6local_linux.go
generated
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
package nl
|
||||
|
||||
import ()
|
||||
|
||||
// seg6local parameters
|
||||
const (
|
||||
SEG6_LOCAL_UNSPEC = iota
|
||||
SEG6_LOCAL_ACTION
|
||||
SEG6_LOCAL_SRH
|
||||
SEG6_LOCAL_TABLE
|
||||
SEG6_LOCAL_NH4
|
||||
SEG6_LOCAL_NH6
|
||||
SEG6_LOCAL_IIF
|
||||
SEG6_LOCAL_OIF
|
||||
__SEG6_LOCAL_MAX
|
||||
)
|
||||
const (
|
||||
SEG6_LOCAL_MAX = __SEG6_LOCAL_MAX
|
||||
)
|
||||
|
||||
// seg6local actions
|
||||
const (
|
||||
SEG6_LOCAL_ACTION_END = iota + 1 // 1
|
||||
SEG6_LOCAL_ACTION_END_X // 2
|
||||
SEG6_LOCAL_ACTION_END_T // 3
|
||||
SEG6_LOCAL_ACTION_END_DX2 // 4
|
||||
SEG6_LOCAL_ACTION_END_DX6 // 5
|
||||
SEG6_LOCAL_ACTION_END_DX4 // 6
|
||||
SEG6_LOCAL_ACTION_END_DT6 // 7
|
||||
SEG6_LOCAL_ACTION_END_DT4 // 8
|
||||
SEG6_LOCAL_ACTION_END_B6 // 9
|
||||
SEG6_LOCAL_ACTION_END_B6_ENCAPS // 10
|
||||
SEG6_LOCAL_ACTION_END_BM // 11
|
||||
SEG6_LOCAL_ACTION_END_S // 12
|
||||
SEG6_LOCAL_ACTION_END_AS // 13
|
||||
SEG6_LOCAL_ACTION_END_AM // 14
|
||||
__SEG6_LOCAL_ACTION_MAX
|
||||
)
|
||||
const (
|
||||
SEG6_LOCAL_ACTION_MAX = __SEG6_LOCAL_ACTION_MAX - 1
|
||||
)
|
||||
|
||||
// Helper functions
|
||||
func SEG6LocalActionString(action int) string {
|
||||
switch action {
|
||||
case SEG6_LOCAL_ACTION_END:
|
||||
return "End"
|
||||
case SEG6_LOCAL_ACTION_END_X:
|
||||
return "End.X"
|
||||
case SEG6_LOCAL_ACTION_END_T:
|
||||
return "End.T"
|
||||
case SEG6_LOCAL_ACTION_END_DX2:
|
||||
return "End.DX2"
|
||||
case SEG6_LOCAL_ACTION_END_DX6:
|
||||
return "End.DX6"
|
||||
case SEG6_LOCAL_ACTION_END_DX4:
|
||||
return "End.DX4"
|
||||
case SEG6_LOCAL_ACTION_END_DT6:
|
||||
return "End.DT6"
|
||||
case SEG6_LOCAL_ACTION_END_DT4:
|
||||
return "End.DT4"
|
||||
case SEG6_LOCAL_ACTION_END_B6:
|
||||
return "End.B6"
|
||||
case SEG6_LOCAL_ACTION_END_B6_ENCAPS:
|
||||
return "End.B6.Encaps"
|
||||
case SEG6_LOCAL_ACTION_END_BM:
|
||||
return "End.BM"
|
||||
case SEG6_LOCAL_ACTION_END_S:
|
||||
return "End.S"
|
||||
case SEG6_LOCAL_ACTION_END_AS:
|
||||
return "End.AS"
|
||||
case SEG6_LOCAL_ACTION_END_AM:
|
||||
return "End.AM"
|
||||
}
|
||||
return "unknown"
|
||||
}
|
||||
1
vendor/github.com/vishvananda/netlink/nl/syscall.go
generated
vendored
1
vendor/github.com/vishvananda/netlink/nl/syscall.go
generated
vendored
@@ -67,6 +67,7 @@ const (
|
||||
LWTUNNEL_ENCAP_IP6
|
||||
LWTUNNEL_ENCAP_SEG6
|
||||
LWTUNNEL_ENCAP_BPF
|
||||
LWTUNNEL_ENCAP_SEG6_LOCAL
|
||||
)
|
||||
|
||||
// routing header types
|
||||
|
||||
137
vendor/github.com/vishvananda/netlink/nl/tc_linux.go
generated
vendored
137
vendor/github.com/vishvananda/netlink/nl/tc_linux.go
generated
vendored
@@ -1,6 +1,7 @@
|
||||
package nl
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
@@ -64,6 +65,15 @@ const (
|
||||
TCA_PRIO_MAX = TCA_PRIO_MQ
|
||||
)
|
||||
|
||||
const (
|
||||
TCA_STATS_UNSPEC = iota
|
||||
TCA_STATS_BASIC
|
||||
TCA_STATS_RATE_EST
|
||||
TCA_STATS_QUEUE
|
||||
TCA_STATS_APP
|
||||
TCA_STATS_MAX = TCA_STATS_APP
|
||||
)
|
||||
|
||||
const (
|
||||
SizeofTcMsg = 0x14
|
||||
SizeofTcActionMsg = 0x04
|
||||
@@ -79,6 +89,7 @@ const (
|
||||
SizeofTcU32Key = 0x10
|
||||
SizeofTcU32Sel = 0x10 // without keys
|
||||
SizeofTcGen = 0x14
|
||||
SizeofTcConnmark = SizeofTcGen + 0x04
|
||||
SizeofTcMirred = SizeofTcGen + 0x08
|
||||
SizeofTcPolice = 2*SizeofTcRateSpec + 0x20
|
||||
)
|
||||
@@ -412,6 +423,57 @@ func (x *TcHtbGlob) Serialize() []byte {
|
||||
return (*(*[SizeofTcHtbGlob]byte)(unsafe.Pointer(x)))[:]
|
||||
}
|
||||
|
||||
// HFSC
|
||||
|
||||
type Curve struct {
|
||||
m1 uint32
|
||||
d uint32
|
||||
m2 uint32
|
||||
}
|
||||
|
||||
type HfscCopt struct {
|
||||
Rsc Curve
|
||||
Fsc Curve
|
||||
Usc Curve
|
||||
}
|
||||
|
||||
func (c *Curve) Attrs() (uint32, uint32, uint32) {
|
||||
return c.m1, c.d, c.m2
|
||||
}
|
||||
|
||||
func (c *Curve) Set(m1 uint32, d uint32, m2 uint32) {
|
||||
c.m1 = m1
|
||||
c.d = d
|
||||
c.m2 = m2
|
||||
}
|
||||
|
||||
func DeserializeHfscCurve(b []byte) *Curve {
|
||||
return &Curve{
|
||||
m1: binary.LittleEndian.Uint32(b[0:4]),
|
||||
d: binary.LittleEndian.Uint32(b[4:8]),
|
||||
m2: binary.LittleEndian.Uint32(b[8:12]),
|
||||
}
|
||||
}
|
||||
|
||||
func SerializeHfscCurve(c *Curve) (b []byte) {
|
||||
t := make([]byte, binary.MaxVarintLen32)
|
||||
binary.LittleEndian.PutUint32(t, c.m1)
|
||||
b = append(b, t[:4]...)
|
||||
binary.LittleEndian.PutUint32(t, c.d)
|
||||
b = append(b, t[:4]...)
|
||||
binary.LittleEndian.PutUint32(t, c.m2)
|
||||
b = append(b, t[:4]...)
|
||||
return b
|
||||
}
|
||||
|
||||
type TcHfscOpt struct {
|
||||
Defcls uint16
|
||||
}
|
||||
|
||||
func (x *TcHfscOpt) Serialize() []byte {
|
||||
return (*(*[2]byte)(unsafe.Pointer(x)))[:]
|
||||
}
|
||||
|
||||
const (
|
||||
TCA_U32_UNSPEC = iota
|
||||
TCA_U32_CLASSID
|
||||
@@ -591,6 +653,39 @@ const (
|
||||
|
||||
type TcBpf TcGen
|
||||
|
||||
const (
|
||||
TCA_ACT_CONNMARK = 14
|
||||
)
|
||||
|
||||
const (
|
||||
TCA_CONNMARK_UNSPEC = iota
|
||||
TCA_CONNMARK_PARMS
|
||||
TCA_CONNMARK_TM
|
||||
TCA_CONNMARK_MAX = TCA_CONNMARK_TM
|
||||
)
|
||||
|
||||
// struct tc_connmark {
|
||||
// tc_gen;
|
||||
// __u16 zone;
|
||||
// };
|
||||
|
||||
type TcConnmark struct {
|
||||
TcGen
|
||||
Zone uint16
|
||||
}
|
||||
|
||||
func (msg *TcConnmark) Len() int {
|
||||
return SizeofTcConnmark
|
||||
}
|
||||
|
||||
func DeserializeTcConnmark(b []byte) *TcConnmark {
|
||||
return (*TcConnmark)(unsafe.Pointer(&b[0:SizeofTcConnmark][0]))
|
||||
}
|
||||
|
||||
func (x *TcConnmark) Serialize() []byte {
|
||||
return (*(*[SizeofTcConnmark]byte)(unsafe.Pointer(x)))[:]
|
||||
}
|
||||
|
||||
const (
|
||||
TCA_ACT_MIRRED = 8
|
||||
)
|
||||
@@ -673,3 +768,45 @@ const (
|
||||
TCA_FW_MASK
|
||||
TCA_FW_MAX = TCA_FW_MASK
|
||||
)
|
||||
|
||||
const (
|
||||
TCA_MATCHALL_UNSPEC = iota
|
||||
TCA_MATCHALL_CLASSID
|
||||
TCA_MATCHALL_ACT
|
||||
TCA_MATCHALL_FLAGS
|
||||
)
|
||||
|
||||
const (
|
||||
TCA_FQ_UNSPEC = iota
|
||||
TCA_FQ_PLIMIT // limit of total number of packets in queue
|
||||
TCA_FQ_FLOW_PLIMIT // limit of packets per flow
|
||||
TCA_FQ_QUANTUM // RR quantum
|
||||
TCA_FQ_INITIAL_QUANTUM // RR quantum for new flow
|
||||
TCA_FQ_RATE_ENABLE // enable/disable rate limiting
|
||||
TCA_FQ_FLOW_DEFAULT_RATE // obsolete do not use
|
||||
TCA_FQ_FLOW_MAX_RATE // per flow max rate
|
||||
TCA_FQ_BUCKETS_LOG // log2(number of buckets)
|
||||
TCA_FQ_FLOW_REFILL_DELAY // flow credit refill delay in usec
|
||||
TCA_FQ_ORPHAN_MASK // mask applied to orphaned skb hashes
|
||||
TCA_FQ_LOW_RATE_THRESHOLD // per packet delay under this rate
|
||||
)
|
||||
|
||||
const (
|
||||
TCA_FQ_CODEL_UNSPEC = iota
|
||||
TCA_FQ_CODEL_TARGET
|
||||
TCA_FQ_CODEL_LIMIT
|
||||
TCA_FQ_CODEL_INTERVAL
|
||||
TCA_FQ_CODEL_ECN
|
||||
TCA_FQ_CODEL_FLOWS
|
||||
TCA_FQ_CODEL_QUANTUM
|
||||
TCA_FQ_CODEL_CE_THRESHOLD
|
||||
TCA_FQ_CODEL_DROP_BATCH_SIZE
|
||||
TCA_FQ_CODEL_MEMORY_LIMIT
|
||||
)
|
||||
|
||||
const (
|
||||
TCA_HFSC_UNSPEC = iota
|
||||
TCA_HFSC_RSC
|
||||
TCA_HFSC_FSC
|
||||
TCA_HFSC_USC
|
||||
)
|
||||
|
||||
60
vendor/github.com/vishvananda/netlink/nl/xfrm_linux.go
generated
vendored
60
vendor/github.com/vishvananda/netlink/nl/xfrm_linux.go
generated
vendored
@@ -50,32 +50,40 @@ const (
|
||||
// Attribute types
|
||||
const (
|
||||
/* Netlink message attributes. */
|
||||
XFRMA_UNSPEC = 0x00
|
||||
XFRMA_ALG_AUTH = 0x01 /* struct xfrm_algo */
|
||||
XFRMA_ALG_CRYPT = 0x02 /* struct xfrm_algo */
|
||||
XFRMA_ALG_COMP = 0x03 /* struct xfrm_algo */
|
||||
XFRMA_ENCAP = 0x04 /* struct xfrm_algo + struct xfrm_encap_tmpl */
|
||||
XFRMA_TMPL = 0x05 /* 1 or more struct xfrm_user_tmpl */
|
||||
XFRMA_SA = 0x06 /* struct xfrm_usersa_info */
|
||||
XFRMA_POLICY = 0x07 /* struct xfrm_userpolicy_info */
|
||||
XFRMA_SEC_CTX = 0x08 /* struct xfrm_sec_ctx */
|
||||
XFRMA_LTIME_VAL = 0x09
|
||||
XFRMA_REPLAY_VAL = 0x0a
|
||||
XFRMA_REPLAY_THRESH = 0x0b
|
||||
XFRMA_ETIMER_THRESH = 0x0c
|
||||
XFRMA_SRCADDR = 0x0d /* xfrm_address_t */
|
||||
XFRMA_COADDR = 0x0e /* xfrm_address_t */
|
||||
XFRMA_LASTUSED = 0x0f /* unsigned long */
|
||||
XFRMA_POLICY_TYPE = 0x10 /* struct xfrm_userpolicy_type */
|
||||
XFRMA_MIGRATE = 0x11
|
||||
XFRMA_ALG_AEAD = 0x12 /* struct xfrm_algo_aead */
|
||||
XFRMA_KMADDRESS = 0x13 /* struct xfrm_user_kmaddress */
|
||||
XFRMA_ALG_AUTH_TRUNC = 0x14 /* struct xfrm_algo_auth */
|
||||
XFRMA_MARK = 0x15 /* struct xfrm_mark */
|
||||
XFRMA_TFCPAD = 0x16 /* __u32 */
|
||||
XFRMA_REPLAY_ESN_VAL = 0x17 /* struct xfrm_replay_esn */
|
||||
XFRMA_SA_EXTRA_FLAGS = 0x18 /* __u32 */
|
||||
XFRMA_MAX = 0x18
|
||||
XFRMA_UNSPEC = iota
|
||||
XFRMA_ALG_AUTH /* struct xfrm_algo */
|
||||
XFRMA_ALG_CRYPT /* struct xfrm_algo */
|
||||
XFRMA_ALG_COMP /* struct xfrm_algo */
|
||||
XFRMA_ENCAP /* struct xfrm_algo + struct xfrm_encap_tmpl */
|
||||
XFRMA_TMPL /* 1 or more struct xfrm_user_tmpl */
|
||||
XFRMA_SA /* struct xfrm_usersa_info */
|
||||
XFRMA_POLICY /* struct xfrm_userpolicy_info */
|
||||
XFRMA_SEC_CTX /* struct xfrm_sec_ctx */
|
||||
XFRMA_LTIME_VAL
|
||||
XFRMA_REPLAY_VAL
|
||||
XFRMA_REPLAY_THRESH
|
||||
XFRMA_ETIMER_THRESH
|
||||
XFRMA_SRCADDR /* xfrm_address_t */
|
||||
XFRMA_COADDR /* xfrm_address_t */
|
||||
XFRMA_LASTUSED /* unsigned long */
|
||||
XFRMA_POLICY_TYPE /* struct xfrm_userpolicy_type */
|
||||
XFRMA_MIGRATE
|
||||
XFRMA_ALG_AEAD /* struct xfrm_algo_aead */
|
||||
XFRMA_KMADDRESS /* struct xfrm_user_kmaddress */
|
||||
XFRMA_ALG_AUTH_TRUNC /* struct xfrm_algo_auth */
|
||||
XFRMA_MARK /* struct xfrm_mark */
|
||||
XFRMA_TFCPAD /* __u32 */
|
||||
XFRMA_REPLAY_ESN_VAL /* struct xfrm_replay_esn */
|
||||
XFRMA_SA_EXTRA_FLAGS /* __u32 */
|
||||
XFRMA_PROTO /* __u8 */
|
||||
XFRMA_ADDRESS_FILTER /* struct xfrm_address_filter */
|
||||
XFRMA_PAD
|
||||
XFRMA_OFFLOAD_DEV /* struct xfrm_state_offload */
|
||||
XFRMA_SET_MARK /* __u32 */
|
||||
XFRMA_SET_MARK_MASK /* __u32 */
|
||||
XFRMA_IF_ID /* __u32 */
|
||||
|
||||
XFRMA_MAX = iota - 1
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
4
vendor/github.com/vishvananda/netlink/protinfo.go
generated
vendored
4
vendor/github.com/vishvananda/netlink/protinfo.go
generated
vendored
@@ -18,6 +18,10 @@ type Protinfo struct {
|
||||
|
||||
// String returns a list of enabled flags
|
||||
func (prot *Protinfo) String() string {
|
||||
if prot == nil {
|
||||
return "<nil>"
|
||||
}
|
||||
|
||||
var boolStrings []string
|
||||
if prot.Hairpin {
|
||||
boolStrings = append(boolStrings, "Hairpin")
|
||||
|
||||
7
vendor/github.com/vishvananda/netlink/protinfo_linux.go
generated
vendored
7
vendor/github.com/vishvananda/netlink/protinfo_linux.go
generated
vendored
@@ -41,7 +41,7 @@ func (h *Handle) LinkGetProtinfo(link Link) (Protinfo, error) {
|
||||
if err != nil {
|
||||
return pi, err
|
||||
}
|
||||
pi = *parseProtinfo(infos)
|
||||
pi = parseProtinfo(infos)
|
||||
|
||||
return pi, nil
|
||||
}
|
||||
@@ -49,8 +49,7 @@ func (h *Handle) LinkGetProtinfo(link Link) (Protinfo, error) {
|
||||
return pi, fmt.Errorf("Device with index %d not found", base.Index)
|
||||
}
|
||||
|
||||
func parseProtinfo(infos []syscall.NetlinkRouteAttr) *Protinfo {
|
||||
var pi Protinfo
|
||||
func parseProtinfo(infos []syscall.NetlinkRouteAttr) (pi Protinfo) {
|
||||
for _, info := range infos {
|
||||
switch info.Attr.Type {
|
||||
case nl.IFLA_BRPORT_MODE:
|
||||
@@ -71,5 +70,5 @@ func parseProtinfo(infos []syscall.NetlinkRouteAttr) *Protinfo {
|
||||
pi.ProxyArpWiFi = byteToBool(info.Value[0])
|
||||
}
|
||||
}
|
||||
return &pi
|
||||
return
|
||||
}
|
||||
|
||||
108
vendor/github.com/vishvananda/netlink/qdisc.go
generated
vendored
108
vendor/github.com/vishvananda/netlink/qdisc.go
generated
vendored
@@ -176,6 +176,13 @@ type Netem struct {
|
||||
CorruptCorr uint32
|
||||
}
|
||||
|
||||
func (netem *Netem) String() string {
|
||||
return fmt.Sprintf(
|
||||
"{Latency: %v, Limit: %v, Loss: %v, Gap: %v, Duplicate: %v, Jitter: %v}",
|
||||
netem.Latency, netem.Limit, netem.Loss, netem.Gap, netem.Duplicate, netem.Jitter,
|
||||
)
|
||||
}
|
||||
|
||||
func (qdisc *Netem) Attrs() *QdiscAttrs {
|
||||
return &qdisc.QdiscAttrs
|
||||
}
|
||||
@@ -230,3 +237,104 @@ func (qdisc *GenericQdisc) Attrs() *QdiscAttrs {
|
||||
func (qdisc *GenericQdisc) Type() string {
|
||||
return qdisc.QdiscType
|
||||
}
|
||||
|
||||
type Hfsc struct {
|
||||
QdiscAttrs
|
||||
Defcls uint16
|
||||
}
|
||||
|
||||
func NewHfsc(attrs QdiscAttrs) *Hfsc {
|
||||
return &Hfsc{
|
||||
QdiscAttrs: attrs,
|
||||
Defcls: 1,
|
||||
}
|
||||
}
|
||||
|
||||
func (hfsc *Hfsc) Attrs() *QdiscAttrs {
|
||||
return &hfsc.QdiscAttrs
|
||||
}
|
||||
|
||||
func (hfsc *Hfsc) Type() string {
|
||||
return "hfsc"
|
||||
}
|
||||
|
||||
func (hfsc *Hfsc) String() string {
|
||||
return fmt.Sprintf(
|
||||
"{%v -- default: %d}",
|
||||
hfsc.Attrs(), hfsc.Defcls,
|
||||
)
|
||||
}
|
||||
|
||||
// Fq is a classless packet scheduler meant to be mostly used for locally generated traffic.
|
||||
type Fq struct {
|
||||
QdiscAttrs
|
||||
PacketLimit uint32
|
||||
FlowPacketLimit uint32
|
||||
// In bytes
|
||||
Quantum uint32
|
||||
InitialQuantum uint32
|
||||
// called RateEnable under the hood
|
||||
Pacing uint32
|
||||
FlowDefaultRate uint32
|
||||
FlowMaxRate uint32
|
||||
// called BucketsLog under the hood
|
||||
Buckets uint32
|
||||
FlowRefillDelay uint32
|
||||
LowRateThreshold uint32
|
||||
}
|
||||
|
||||
func (fq *Fq) String() string {
|
||||
return fmt.Sprintf(
|
||||
"{PacketLimit: %v, FlowPacketLimit: %v, Quantum: %v, InitialQuantum: %v, Pacing: %v, FlowDefaultRate: %v, FlowMaxRate: %v, Buckets: %v, FlowRefillDelay: %v, LowRateThreshold: %v}",
|
||||
fq.PacketLimit, fq.FlowPacketLimit, fq.Quantum, fq.InitialQuantum, fq.Pacing, fq.FlowDefaultRate, fq.FlowMaxRate, fq.Buckets, fq.FlowRefillDelay, fq.LowRateThreshold,
|
||||
)
|
||||
}
|
||||
|
||||
func NewFq(attrs QdiscAttrs) *Fq {
|
||||
return &Fq{
|
||||
QdiscAttrs: attrs,
|
||||
Pacing: 1,
|
||||
}
|
||||
}
|
||||
|
||||
func (qdisc *Fq) Attrs() *QdiscAttrs {
|
||||
return &qdisc.QdiscAttrs
|
||||
}
|
||||
|
||||
func (qdisc *Fq) Type() string {
|
||||
return "fq"
|
||||
}
|
||||
|
||||
// FQ_Codel (Fair Queuing Controlled Delay) is queuing discipline that combines Fair Queuing with the CoDel AQM scheme.
|
||||
type FqCodel struct {
|
||||
QdiscAttrs
|
||||
Target uint32
|
||||
Limit uint32
|
||||
Interval uint32
|
||||
ECN uint32
|
||||
Flows uint32
|
||||
Quantum uint32
|
||||
// There are some more attributes here, but support for them seems not ubiquitous
|
||||
}
|
||||
|
||||
func (fqcodel *FqCodel) String() string {
|
||||
return fmt.Sprintf(
|
||||
"{%v -- Target: %v, Limit: %v, Interval: %v, ECM: %v, Flows: %v, Quantum: %v}",
|
||||
fqcodel.Attrs(), fqcodel.Target, fqcodel.Limit, fqcodel.Interval, fqcodel.ECN, fqcodel.Flows, fqcodel.Quantum,
|
||||
)
|
||||
}
|
||||
|
||||
func NewFqCodel(attrs QdiscAttrs) *FqCodel {
|
||||
return &FqCodel{
|
||||
QdiscAttrs: attrs,
|
||||
ECN: 1,
|
||||
}
|
||||
}
|
||||
|
||||
func (qdisc *FqCodel) Attrs() *QdiscAttrs {
|
||||
return &qdisc.QdiscAttrs
|
||||
}
|
||||
|
||||
func (qdisc *FqCodel) Type() string {
|
||||
return "fq_codel"
|
||||
}
|
||||
|
||||
158
vendor/github.com/vishvananda/netlink/qdisc_linux.go
generated
vendored
158
vendor/github.com/vishvananda/netlink/qdisc_linux.go
generated
vendored
@@ -175,15 +175,15 @@ func qdiscPayload(req *nl.NetlinkRequest, qdisc Qdisc) error {
|
||||
opt.Peakrate.Rate = uint32(qdisc.Peakrate)
|
||||
opt.Limit = qdisc.Limit
|
||||
opt.Buffer = qdisc.Buffer
|
||||
nl.NewRtAttrChild(options, nl.TCA_TBF_PARMS, opt.Serialize())
|
||||
options.AddRtAttr(nl.TCA_TBF_PARMS, opt.Serialize())
|
||||
if qdisc.Rate >= uint64(1<<32) {
|
||||
nl.NewRtAttrChild(options, nl.TCA_TBF_RATE64, nl.Uint64Attr(qdisc.Rate))
|
||||
options.AddRtAttr(nl.TCA_TBF_RATE64, nl.Uint64Attr(qdisc.Rate))
|
||||
}
|
||||
if qdisc.Peakrate >= uint64(1<<32) {
|
||||
nl.NewRtAttrChild(options, nl.TCA_TBF_PRATE64, nl.Uint64Attr(qdisc.Peakrate))
|
||||
options.AddRtAttr(nl.TCA_TBF_PRATE64, nl.Uint64Attr(qdisc.Peakrate))
|
||||
}
|
||||
if qdisc.Peakrate > 0 {
|
||||
nl.NewRtAttrChild(options, nl.TCA_TBF_PBURST, nl.Uint32Attr(qdisc.Minburst))
|
||||
options.AddRtAttr(nl.TCA_TBF_PBURST, nl.Uint32Attr(qdisc.Minburst))
|
||||
}
|
||||
case *Htb:
|
||||
opt := nl.TcHtbGlob{}
|
||||
@@ -193,8 +193,12 @@ func qdiscPayload(req *nl.NetlinkRequest, qdisc Qdisc) error {
|
||||
// TODO: Handle Debug properly. For now default to 0
|
||||
opt.Debug = qdisc.Debug
|
||||
opt.DirectPkts = qdisc.DirectPkts
|
||||
nl.NewRtAttrChild(options, nl.TCA_HTB_INIT, opt.Serialize())
|
||||
// nl.NewRtAttrChild(options, nl.TCA_HTB_DIRECT_QLEN, opt.Serialize())
|
||||
options.AddRtAttr(nl.TCA_HTB_INIT, opt.Serialize())
|
||||
// options.AddRtAttr(nl.TCA_HTB_DIRECT_QLEN, opt.Serialize())
|
||||
case *Hfsc:
|
||||
opt := nl.TcHfscOpt{}
|
||||
opt.Defcls = qdisc.Defcls
|
||||
options = nl.NewRtAttr(nl.TCA_OPTIONS, opt.Serialize())
|
||||
case *Netem:
|
||||
opt := nl.TcNetemQopt{}
|
||||
opt.Latency = qdisc.Latency
|
||||
@@ -211,30 +215,76 @@ func qdiscPayload(req *nl.NetlinkRequest, qdisc Qdisc) error {
|
||||
corr.DupCorr = qdisc.DuplicateCorr
|
||||
|
||||
if corr.DelayCorr > 0 || corr.LossCorr > 0 || corr.DupCorr > 0 {
|
||||
nl.NewRtAttrChild(options, nl.TCA_NETEM_CORR, corr.Serialize())
|
||||
options.AddRtAttr(nl.TCA_NETEM_CORR, corr.Serialize())
|
||||
}
|
||||
// Corruption
|
||||
corruption := nl.TcNetemCorrupt{}
|
||||
corruption.Probability = qdisc.CorruptProb
|
||||
corruption.Correlation = qdisc.CorruptCorr
|
||||
if corruption.Probability > 0 {
|
||||
nl.NewRtAttrChild(options, nl.TCA_NETEM_CORRUPT, corruption.Serialize())
|
||||
options.AddRtAttr(nl.TCA_NETEM_CORRUPT, corruption.Serialize())
|
||||
}
|
||||
// Reorder
|
||||
reorder := nl.TcNetemReorder{}
|
||||
reorder.Probability = qdisc.ReorderProb
|
||||
reorder.Correlation = qdisc.ReorderCorr
|
||||
if reorder.Probability > 0 {
|
||||
nl.NewRtAttrChild(options, nl.TCA_NETEM_REORDER, reorder.Serialize())
|
||||
options.AddRtAttr(nl.TCA_NETEM_REORDER, reorder.Serialize())
|
||||
}
|
||||
case *Ingress:
|
||||
// ingress filters must use the proper handle
|
||||
if qdisc.Attrs().Parent != HANDLE_INGRESS {
|
||||
return fmt.Errorf("Ingress filters must set Parent to HANDLE_INGRESS")
|
||||
}
|
||||
case *FqCodel:
|
||||
options.AddRtAttr(nl.TCA_FQ_CODEL_ECN, nl.Uint32Attr((uint32(qdisc.ECN))))
|
||||
if qdisc.Limit > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_CODEL_LIMIT, nl.Uint32Attr((uint32(qdisc.Limit))))
|
||||
}
|
||||
if qdisc.Interval > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_CODEL_INTERVAL, nl.Uint32Attr((uint32(qdisc.Interval))))
|
||||
}
|
||||
if qdisc.Flows > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_CODEL_FLOWS, nl.Uint32Attr((uint32(qdisc.Flows))))
|
||||
}
|
||||
if qdisc.Quantum > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_CODEL_QUANTUM, nl.Uint32Attr((uint32(qdisc.Quantum))))
|
||||
}
|
||||
|
||||
case *Fq:
|
||||
options.AddRtAttr(nl.TCA_FQ_RATE_ENABLE, nl.Uint32Attr((uint32(qdisc.Pacing))))
|
||||
|
||||
if qdisc.Buckets > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_BUCKETS_LOG, nl.Uint32Attr((uint32(qdisc.Buckets))))
|
||||
}
|
||||
if qdisc.LowRateThreshold > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_LOW_RATE_THRESHOLD, nl.Uint32Attr((uint32(qdisc.LowRateThreshold))))
|
||||
}
|
||||
if qdisc.Quantum > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_QUANTUM, nl.Uint32Attr((uint32(qdisc.Quantum))))
|
||||
}
|
||||
if qdisc.InitialQuantum > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_INITIAL_QUANTUM, nl.Uint32Attr((uint32(qdisc.InitialQuantum))))
|
||||
}
|
||||
if qdisc.FlowRefillDelay > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_FLOW_REFILL_DELAY, nl.Uint32Attr((uint32(qdisc.FlowRefillDelay))))
|
||||
}
|
||||
if qdisc.FlowPacketLimit > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_FLOW_PLIMIT, nl.Uint32Attr((uint32(qdisc.FlowPacketLimit))))
|
||||
}
|
||||
if qdisc.FlowMaxRate > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_FLOW_MAX_RATE, nl.Uint32Attr((uint32(qdisc.FlowMaxRate))))
|
||||
}
|
||||
if qdisc.FlowDefaultRate > 0 {
|
||||
options.AddRtAttr(nl.TCA_FQ_FLOW_DEFAULT_RATE, nl.Uint32Attr((uint32(qdisc.FlowDefaultRate))))
|
||||
}
|
||||
default:
|
||||
options = nil
|
||||
}
|
||||
|
||||
req.AddData(options)
|
||||
if options != nil {
|
||||
req.AddData(options)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -304,6 +354,12 @@ func (h *Handle) QdiscList(link Link) ([]Qdisc, error) {
|
||||
qdisc = &Ingress{}
|
||||
case "htb":
|
||||
qdisc = &Htb{}
|
||||
case "fq":
|
||||
qdisc = &Fq{}
|
||||
case "hfsc":
|
||||
qdisc = &Hfsc{}
|
||||
case "fq_codel":
|
||||
qdisc = &FqCodel{}
|
||||
case "netem":
|
||||
qdisc = &Netem{}
|
||||
default:
|
||||
@@ -329,6 +385,10 @@ func (h *Handle) QdiscList(link Link) ([]Qdisc, error) {
|
||||
if err := parseTbfData(qdisc, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "hfsc":
|
||||
if err := parseHfscData(qdisc, attr.Value); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "htb":
|
||||
data, err := nl.ParseRouteAttr(attr.Value)
|
||||
if err != nil {
|
||||
@@ -337,6 +397,22 @@ func (h *Handle) QdiscList(link Link) ([]Qdisc, error) {
|
||||
if err := parseHtbData(qdisc, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "fq":
|
||||
data, err := nl.ParseRouteAttr(attr.Value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := parseFqData(qdisc, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "fq_codel":
|
||||
data, err := nl.ParseRouteAttr(attr.Value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := parseFqCodelData(qdisc, data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "netem":
|
||||
if err := parseNetemData(qdisc, attr.Value); err != nil {
|
||||
return nil, err
|
||||
@@ -389,6 +465,68 @@ func parseHtbData(qdisc Qdisc, data []syscall.NetlinkRouteAttr) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func parseFqCodelData(qdisc Qdisc, data []syscall.NetlinkRouteAttr) error {
|
||||
native = nl.NativeEndian()
|
||||
fqCodel := qdisc.(*FqCodel)
|
||||
for _, datum := range data {
|
||||
|
||||
switch datum.Attr.Type {
|
||||
case nl.TCA_FQ_CODEL_TARGET:
|
||||
fqCodel.Target = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_CODEL_LIMIT:
|
||||
fqCodel.Limit = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_CODEL_INTERVAL:
|
||||
fqCodel.Interval = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_CODEL_ECN:
|
||||
fqCodel.ECN = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_CODEL_FLOWS:
|
||||
fqCodel.Flows = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_CODEL_QUANTUM:
|
||||
fqCodel.Quantum = native.Uint32(datum.Value)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func parseHfscData(qdisc Qdisc, data []byte) error {
|
||||
Hfsc := qdisc.(*Hfsc)
|
||||
native = nl.NativeEndian()
|
||||
Hfsc.Defcls = native.Uint16(data)
|
||||
return nil
|
||||
}
|
||||
|
||||
func parseFqData(qdisc Qdisc, data []syscall.NetlinkRouteAttr) error {
|
||||
native = nl.NativeEndian()
|
||||
fq := qdisc.(*Fq)
|
||||
for _, datum := range data {
|
||||
switch datum.Attr.Type {
|
||||
case nl.TCA_FQ_BUCKETS_LOG:
|
||||
fq.Buckets = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_LOW_RATE_THRESHOLD:
|
||||
fq.LowRateThreshold = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_QUANTUM:
|
||||
fq.Quantum = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_RATE_ENABLE:
|
||||
fq.Pacing = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_INITIAL_QUANTUM:
|
||||
fq.InitialQuantum = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_ORPHAN_MASK:
|
||||
// TODO
|
||||
case nl.TCA_FQ_FLOW_REFILL_DELAY:
|
||||
fq.FlowRefillDelay = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_FLOW_PLIMIT:
|
||||
fq.FlowPacketLimit = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_PLIMIT:
|
||||
fq.PacketLimit = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_FLOW_MAX_RATE:
|
||||
fq.FlowMaxRate = native.Uint32(datum.Value)
|
||||
case nl.TCA_FQ_FLOW_DEFAULT_RATE:
|
||||
fq.FlowDefaultRate = native.Uint32(datum.Value)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func parseNetemData(qdisc Qdisc, value []byte) error {
|
||||
netem := qdisc.(*Netem)
|
||||
opt := nl.DeserializeTcNetemQopt(value)
|
||||
|
||||
145
vendor/github.com/vishvananda/netlink/rdma_link_linux.go
generated
vendored
Normal file
145
vendor/github.com/vishvananda/netlink/rdma_link_linux.go
generated
vendored
Normal file
@@ -0,0 +1,145 @@
|
||||
package netlink
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"net"
|
||||
|
||||
"github.com/vishvananda/netlink/nl"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
// LinkAttrs represents data shared by most link types
|
||||
type RdmaLinkAttrs struct {
|
||||
Index uint32
|
||||
Name string
|
||||
FirmwareVersion string
|
||||
NodeGuid string
|
||||
SysImageGuid string
|
||||
}
|
||||
|
||||
// Link represents a rdma device from netlink.
|
||||
type RdmaLink struct {
|
||||
Attrs RdmaLinkAttrs
|
||||
}
|
||||
|
||||
func getProtoField(clientType int, op int) int {
|
||||
return ((clientType << nl.RDMA_NL_GET_CLIENT_SHIFT) | op)
|
||||
}
|
||||
|
||||
func uint64ToGuidString(guid uint64) string {
|
||||
//Convert to byte array
|
||||
sysGuidBytes := new(bytes.Buffer)
|
||||
binary.Write(sysGuidBytes, binary.LittleEndian, guid)
|
||||
|
||||
//Convert to HardwareAddr
|
||||
sysGuidNet := net.HardwareAddr(sysGuidBytes.Bytes())
|
||||
|
||||
//Get the String
|
||||
return sysGuidNet.String()
|
||||
}
|
||||
|
||||
func executeOneGetRdmaLink(data []byte) (*RdmaLink, error) {
|
||||
|
||||
link := RdmaLink{}
|
||||
|
||||
reader := bytes.NewReader(data)
|
||||
for reader.Len() >= 4 {
|
||||
_, attrType, len, value := parseNfAttrTLV(reader)
|
||||
|
||||
switch attrType {
|
||||
case nl.RDMA_NLDEV_ATTR_DEV_INDEX:
|
||||
var Index uint32
|
||||
r := bytes.NewReader(value)
|
||||
binary.Read(r, nl.NativeEndian(), &Index)
|
||||
link.Attrs.Index = Index
|
||||
case nl.RDMA_NLDEV_ATTR_DEV_NAME:
|
||||
link.Attrs.Name = string(value[0 : len-1])
|
||||
case nl.RDMA_NLDEV_ATTR_FW_VERSION:
|
||||
link.Attrs.FirmwareVersion = string(value[0 : len-1])
|
||||
case nl.RDMA_NLDEV_ATTR_NODE_GUID:
|
||||
var guid uint64
|
||||
r := bytes.NewReader(value)
|
||||
binary.Read(r, nl.NativeEndian(), &guid)
|
||||
link.Attrs.NodeGuid = uint64ToGuidString(guid)
|
||||
case nl.RDMA_NLDEV_ATTR_SYS_IMAGE_GUID:
|
||||
var sysGuid uint64
|
||||
r := bytes.NewReader(value)
|
||||
binary.Read(r, nl.NativeEndian(), &sysGuid)
|
||||
link.Attrs.SysImageGuid = uint64ToGuidString(sysGuid)
|
||||
}
|
||||
if (len % 4) != 0 {
|
||||
// Skip pad bytes
|
||||
reader.Seek(int64(4-(len%4)), seekCurrent)
|
||||
}
|
||||
}
|
||||
return &link, nil
|
||||
}
|
||||
|
||||
func execRdmaGetLink(req *nl.NetlinkRequest, name string) (*RdmaLink, error) {
|
||||
|
||||
msgs, err := req.Execute(unix.NETLINK_RDMA, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, m := range msgs {
|
||||
link, err := executeOneGetRdmaLink(m)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if link.Attrs.Name == name {
|
||||
return link, nil
|
||||
}
|
||||
}
|
||||
return nil, fmt.Errorf("Rdma device %v not found", name)
|
||||
}
|
||||
|
||||
func execRdmaSetLink(req *nl.NetlinkRequest) error {
|
||||
|
||||
_, err := req.Execute(unix.NETLINK_RDMA, 0)
|
||||
return err
|
||||
}
|
||||
|
||||
// RdmaLinkByName finds a link by name and returns a pointer to the object if
|
||||
// found and nil error, otherwise returns error code.
|
||||
func RdmaLinkByName(name string) (*RdmaLink, error) {
|
||||
return pkgHandle.RdmaLinkByName(name)
|
||||
}
|
||||
|
||||
// RdmaLinkByName finds a link by name and returns a pointer to the object if
|
||||
// found and nil error, otherwise returns error code.
|
||||
func (h *Handle) RdmaLinkByName(name string) (*RdmaLink, error) {
|
||||
|
||||
proto := getProtoField(nl.RDMA_NL_NLDEV, nl.RDMA_NLDEV_CMD_GET)
|
||||
req := h.newNetlinkRequest(proto, unix.NLM_F_ACK|unix.NLM_F_DUMP)
|
||||
|
||||
return execRdmaGetLink(req, name)
|
||||
}
|
||||
|
||||
// RdmaLinkSetName sets the name of the rdma link device. Return nil on success
|
||||
// or error otherwise.
|
||||
// Equivalent to: `rdma dev set $old_devname name $name`
|
||||
func RdmaLinkSetName(link *RdmaLink, name string) error {
|
||||
return pkgHandle.RdmaLinkSetName(link, name)
|
||||
}
|
||||
|
||||
// RdmaLinkSetName sets the name of the rdma link device. Return nil on success
|
||||
// or error otherwise.
|
||||
// Equivalent to: `rdma dev set $old_devname name $name`
|
||||
func (h *Handle) RdmaLinkSetName(link *RdmaLink, name string) error {
|
||||
proto := getProtoField(nl.RDMA_NL_NLDEV, nl.RDMA_NLDEV_CMD_SET)
|
||||
req := h.newNetlinkRequest(proto, unix.NLM_F_ACK)
|
||||
|
||||
b := make([]byte, 4)
|
||||
native.PutUint32(b, uint32(link.Attrs.Index))
|
||||
data := nl.NewRtAttr(nl.RDMA_NLDEV_ATTR_DEV_INDEX, b)
|
||||
req.AddData(data)
|
||||
|
||||
b = make([]byte, len(name)+1)
|
||||
copy(b, name)
|
||||
data = nl.NewRtAttr(nl.RDMA_NLDEV_ATTR_DEV_NAME, b)
|
||||
req.AddData(data)
|
||||
|
||||
return execRdmaSetLink(req)
|
||||
}
|
||||
2
vendor/github.com/vishvananda/netlink/route.go
generated
vendored
2
vendor/github.com/vishvananda/netlink/route.go
generated
vendored
@@ -47,6 +47,7 @@ type Route struct {
|
||||
Encap Encap
|
||||
MTU int
|
||||
AdvMSS int
|
||||
Hoplimit int
|
||||
}
|
||||
|
||||
func (r Route) String() string {
|
||||
@@ -89,6 +90,7 @@ func (r Route) Equal(x Route) bool {
|
||||
r.Table == x.Table &&
|
||||
r.Type == x.Type &&
|
||||
r.Tos == x.Tos &&
|
||||
r.Hoplimit == x.Hoplimit &&
|
||||
r.Flags == x.Flags &&
|
||||
(r.MPLSDst == x.MPLSDst || (r.MPLSDst != nil && x.MPLSDst != nil && *r.MPLSDst == *x.MPLSDst)) &&
|
||||
(r.NewDst == x.NewDst || (r.NewDst != nil && r.NewDst.Equal(x.NewDst))) &&
|
||||
|
||||
229
vendor/github.com/vishvananda/netlink/route_linux.go
generated
vendored
229
vendor/github.com/vishvananda/netlink/route_linux.go
generated
vendored
@@ -32,6 +32,7 @@ const (
|
||||
RT_FILTER_SRC
|
||||
RT_FILTER_GW
|
||||
RT_FILTER_TABLE
|
||||
RT_FILTER_HOPLIMIT
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -207,6 +208,7 @@ func (e *SEG6Encap) Decode(buf []byte) error {
|
||||
}
|
||||
buf = buf[:l] // make sure buf size upper limit is Length
|
||||
typ := native.Uint16(buf[2:])
|
||||
// LWTUNNEL_ENCAP_SEG6 has only one attr type SEG6_IPTUNNEL_SRH
|
||||
if typ != nl.SEG6_IPTUNNEL_SRH {
|
||||
return fmt.Errorf("unknown SEG6 Type: %d", typ)
|
||||
}
|
||||
@@ -259,6 +261,188 @@ func (e *SEG6Encap) Equal(x Encap) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// SEG6LocalEncap definitions
|
||||
type SEG6LocalEncap struct {
|
||||
Flags [nl.SEG6_LOCAL_MAX]bool
|
||||
Action int
|
||||
Segments []net.IP // from SRH in seg6_local_lwt
|
||||
Table int // table id for End.T and End.DT6
|
||||
InAddr net.IP
|
||||
In6Addr net.IP
|
||||
Iif int
|
||||
Oif int
|
||||
}
|
||||
|
||||
func (e *SEG6LocalEncap) Type() int {
|
||||
return nl.LWTUNNEL_ENCAP_SEG6_LOCAL
|
||||
}
|
||||
func (e *SEG6LocalEncap) Decode(buf []byte) error {
|
||||
attrs, err := nl.ParseRouteAttr(buf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
native := nl.NativeEndian()
|
||||
for _, attr := range attrs {
|
||||
switch attr.Attr.Type {
|
||||
case nl.SEG6_LOCAL_ACTION:
|
||||
e.Action = int(native.Uint32(attr.Value[0:4]))
|
||||
e.Flags[nl.SEG6_LOCAL_ACTION] = true
|
||||
case nl.SEG6_LOCAL_SRH:
|
||||
e.Segments, err = nl.DecodeSEG6Srh(attr.Value[:])
|
||||
e.Flags[nl.SEG6_LOCAL_SRH] = true
|
||||
case nl.SEG6_LOCAL_TABLE:
|
||||
e.Table = int(native.Uint32(attr.Value[0:4]))
|
||||
e.Flags[nl.SEG6_LOCAL_TABLE] = true
|
||||
case nl.SEG6_LOCAL_NH4:
|
||||
e.InAddr = net.IP(attr.Value[0:4])
|
||||
e.Flags[nl.SEG6_LOCAL_NH4] = true
|
||||
case nl.SEG6_LOCAL_NH6:
|
||||
e.In6Addr = net.IP(attr.Value[0:16])
|
||||
e.Flags[nl.SEG6_LOCAL_NH6] = true
|
||||
case nl.SEG6_LOCAL_IIF:
|
||||
e.Iif = int(native.Uint32(attr.Value[0:4]))
|
||||
e.Flags[nl.SEG6_LOCAL_IIF] = true
|
||||
case nl.SEG6_LOCAL_OIF:
|
||||
e.Oif = int(native.Uint32(attr.Value[0:4]))
|
||||
e.Flags[nl.SEG6_LOCAL_OIF] = true
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
func (e *SEG6LocalEncap) Encode() ([]byte, error) {
|
||||
var err error
|
||||
native := nl.NativeEndian()
|
||||
res := make([]byte, 8)
|
||||
native.PutUint16(res, 8) // length
|
||||
native.PutUint16(res[2:], nl.SEG6_LOCAL_ACTION)
|
||||
native.PutUint32(res[4:], uint32(e.Action))
|
||||
if e.Flags[nl.SEG6_LOCAL_SRH] {
|
||||
srh, err := nl.EncodeSEG6Srh(e.Segments)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
attr := make([]byte, 4)
|
||||
native.PutUint16(attr, uint16(len(srh)+4))
|
||||
native.PutUint16(attr[2:], nl.SEG6_LOCAL_SRH)
|
||||
attr = append(attr, srh...)
|
||||
res = append(res, attr...)
|
||||
}
|
||||
if e.Flags[nl.SEG6_LOCAL_TABLE] {
|
||||
attr := make([]byte, 8)
|
||||
native.PutUint16(attr, 8)
|
||||
native.PutUint16(attr[2:], nl.SEG6_LOCAL_TABLE)
|
||||
native.PutUint32(attr[4:], uint32(e.Table))
|
||||
res = append(res, attr...)
|
||||
}
|
||||
if e.Flags[nl.SEG6_LOCAL_NH4] {
|
||||
attr := make([]byte, 4)
|
||||
native.PutUint16(attr, 8)
|
||||
native.PutUint16(attr[2:], nl.SEG6_LOCAL_NH4)
|
||||
ipv4 := e.InAddr.To4()
|
||||
if ipv4 == nil {
|
||||
err = fmt.Errorf("SEG6_LOCAL_NH4 has invalid IPv4 address")
|
||||
return nil, err
|
||||
}
|
||||
attr = append(attr, ipv4...)
|
||||
res = append(res, attr...)
|
||||
}
|
||||
if e.Flags[nl.SEG6_LOCAL_NH6] {
|
||||
attr := make([]byte, 4)
|
||||
native.PutUint16(attr, 20)
|
||||
native.PutUint16(attr[2:], nl.SEG6_LOCAL_NH6)
|
||||
attr = append(attr, e.In6Addr...)
|
||||
res = append(res, attr...)
|
||||
}
|
||||
if e.Flags[nl.SEG6_LOCAL_IIF] {
|
||||
attr := make([]byte, 8)
|
||||
native.PutUint16(attr, 8)
|
||||
native.PutUint16(attr[2:], nl.SEG6_LOCAL_IIF)
|
||||
native.PutUint32(attr[4:], uint32(e.Iif))
|
||||
res = append(res, attr...)
|
||||
}
|
||||
if e.Flags[nl.SEG6_LOCAL_OIF] {
|
||||
attr := make([]byte, 8)
|
||||
native.PutUint16(attr, 8)
|
||||
native.PutUint16(attr[2:], nl.SEG6_LOCAL_OIF)
|
||||
native.PutUint32(attr[4:], uint32(e.Oif))
|
||||
res = append(res, attr...)
|
||||
}
|
||||
return res, err
|
||||
}
|
||||
func (e *SEG6LocalEncap) String() string {
|
||||
strs := make([]string, 0, nl.SEG6_LOCAL_MAX)
|
||||
strs = append(strs, fmt.Sprintf("action %s", nl.SEG6LocalActionString(e.Action)))
|
||||
|
||||
if e.Flags[nl.SEG6_LOCAL_TABLE] {
|
||||
strs = append(strs, fmt.Sprintf("table %d", e.Table))
|
||||
}
|
||||
if e.Flags[nl.SEG6_LOCAL_NH4] {
|
||||
strs = append(strs, fmt.Sprintf("nh4 %s", e.InAddr))
|
||||
}
|
||||
if e.Flags[nl.SEG6_LOCAL_NH6] {
|
||||
strs = append(strs, fmt.Sprintf("nh6 %s", e.In6Addr))
|
||||
}
|
||||
if e.Flags[nl.SEG6_LOCAL_IIF] {
|
||||
link, err := LinkByIndex(e.Iif)
|
||||
if err != nil {
|
||||
strs = append(strs, fmt.Sprintf("iif %d", e.Iif))
|
||||
} else {
|
||||
strs = append(strs, fmt.Sprintf("iif %s", link.Attrs().Name))
|
||||
}
|
||||
}
|
||||
if e.Flags[nl.SEG6_LOCAL_OIF] {
|
||||
link, err := LinkByIndex(e.Oif)
|
||||
if err != nil {
|
||||
strs = append(strs, fmt.Sprintf("oif %d", e.Oif))
|
||||
} else {
|
||||
strs = append(strs, fmt.Sprintf("oif %s", link.Attrs().Name))
|
||||
}
|
||||
}
|
||||
if e.Flags[nl.SEG6_LOCAL_SRH] {
|
||||
segs := make([]string, 0, len(e.Segments))
|
||||
//append segment backwards (from n to 0) since seg#0 is the last segment.
|
||||
for i := len(e.Segments); i > 0; i-- {
|
||||
segs = append(segs, fmt.Sprintf("%s", e.Segments[i-1]))
|
||||
}
|
||||
strs = append(strs, fmt.Sprintf("segs %d [ %s ]", len(e.Segments), strings.Join(segs, " ")))
|
||||
}
|
||||
return strings.Join(strs, " ")
|
||||
}
|
||||
func (e *SEG6LocalEncap) Equal(x Encap) bool {
|
||||
o, ok := x.(*SEG6LocalEncap)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
if e == o {
|
||||
return true
|
||||
}
|
||||
if e == nil || o == nil {
|
||||
return false
|
||||
}
|
||||
// compare all arrays first
|
||||
for i := range e.Flags {
|
||||
if e.Flags[i] != o.Flags[i] {
|
||||
return false
|
||||
}
|
||||
}
|
||||
if len(e.Segments) != len(o.Segments) {
|
||||
return false
|
||||
}
|
||||
for i := range e.Segments {
|
||||
if !e.Segments[i].Equal(o.Segments[i]) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
// compare values
|
||||
if !e.InAddr.Equal(o.InAddr) || !e.In6Addr.Equal(o.In6Addr) {
|
||||
return false
|
||||
}
|
||||
if e.Action != o.Action || e.Table != o.Table || e.Iif != o.Iif || e.Oif != o.Oif {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// RouteAdd will add a route to the system.
|
||||
// Equivalent to: `ip route add $route`
|
||||
func RouteAdd(route *Route) error {
|
||||
@@ -464,6 +648,10 @@ func (h *Handle) routeHandle(route *Route, req *nl.NetlinkRequest, msg *nl.RtMsg
|
||||
b := nl.Uint32Attr(uint32(route.AdvMSS))
|
||||
metrics = append(metrics, nl.NewRtAttr(unix.RTAX_ADVMSS, b))
|
||||
}
|
||||
if route.Hoplimit > 0 {
|
||||
b := nl.Uint32Attr(uint32(route.Hoplimit))
|
||||
metrics = append(metrics, nl.NewRtAttr(unix.RTAX_HOPLIMIT, b))
|
||||
}
|
||||
|
||||
if metrics != nil {
|
||||
attr := nl.NewRtAttr(unix.RTA_METRICS, nil)
|
||||
@@ -574,6 +762,8 @@ func (h *Handle) RouteListFiltered(family int, filter *Route, filterMask uint64)
|
||||
continue
|
||||
}
|
||||
}
|
||||
case filterMask&RT_FILTER_HOPLIMIT != 0 && route.Hoplimit != filter.Hoplimit:
|
||||
continue
|
||||
}
|
||||
}
|
||||
res = append(res, route)
|
||||
@@ -715,6 +905,8 @@ func deserializeRoute(m []byte) (Route, error) {
|
||||
route.MTU = int(native.Uint32(metric.Value[0:4]))
|
||||
case unix.RTAX_ADVMSS:
|
||||
route.AdvMSS = int(native.Uint32(metric.Value[0:4]))
|
||||
case unix.RTAX_HOPLIMIT:
|
||||
route.Hoplimit = int(native.Uint32(metric.Value[0:4]))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -734,6 +926,11 @@ func deserializeRoute(m []byte) (Route, error) {
|
||||
if err := e.Decode(encap.Value); err != nil {
|
||||
return route, err
|
||||
}
|
||||
case nl.LWTUNNEL_ENCAP_SEG6_LOCAL:
|
||||
e = &SEG6LocalEncap{}
|
||||
if err := e.Decode(encap.Value); err != nil {
|
||||
return route, err
|
||||
}
|
||||
}
|
||||
route.Encap = e
|
||||
}
|
||||
@@ -789,13 +986,13 @@ func (h *Handle) RouteGet(destination net.IP) ([]Route, error) {
|
||||
// RouteSubscribe takes a chan down which notifications will be sent
|
||||
// when routes are added or deleted. Close the 'done' chan to stop subscription.
|
||||
func RouteSubscribe(ch chan<- RouteUpdate, done <-chan struct{}) error {
|
||||
return routeSubscribeAt(netns.None(), netns.None(), ch, done, nil)
|
||||
return routeSubscribeAt(netns.None(), netns.None(), ch, done, nil, false)
|
||||
}
|
||||
|
||||
// RouteSubscribeAt works like RouteSubscribe plus it allows the caller
|
||||
// to choose the network namespace in which to subscribe (ns).
|
||||
func RouteSubscribeAt(ns netns.NsHandle, ch chan<- RouteUpdate, done <-chan struct{}) error {
|
||||
return routeSubscribeAt(ns, netns.None(), ch, done, nil)
|
||||
return routeSubscribeAt(ns, netns.None(), ch, done, nil, false)
|
||||
}
|
||||
|
||||
// RouteSubscribeOptions contains a set of options to use with
|
||||
@@ -803,6 +1000,7 @@ func RouteSubscribeAt(ns netns.NsHandle, ch chan<- RouteUpdate, done <-chan stru
|
||||
type RouteSubscribeOptions struct {
|
||||
Namespace *netns.NsHandle
|
||||
ErrorCallback func(error)
|
||||
ListExisting bool
|
||||
}
|
||||
|
||||
// RouteSubscribeWithOptions work like RouteSubscribe but enable to
|
||||
@@ -813,10 +1011,10 @@ func RouteSubscribeWithOptions(ch chan<- RouteUpdate, done <-chan struct{}, opti
|
||||
none := netns.None()
|
||||
options.Namespace = &none
|
||||
}
|
||||
return routeSubscribeAt(*options.Namespace, netns.None(), ch, done, options.ErrorCallback)
|
||||
return routeSubscribeAt(*options.Namespace, netns.None(), ch, done, options.ErrorCallback, options.ListExisting)
|
||||
}
|
||||
|
||||
func routeSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- RouteUpdate, done <-chan struct{}, cberr func(error)) error {
|
||||
func routeSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- RouteUpdate, done <-chan struct{}, cberr func(error), listExisting bool) error {
|
||||
s, err := nl.SubscribeAt(newNs, curNs, unix.NETLINK_ROUTE, unix.RTNLGRP_IPV4_ROUTE, unix.RTNLGRP_IPV6_ROUTE)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -827,6 +1025,15 @@ func routeSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- RouteUpdate, done <
|
||||
s.Close()
|
||||
}()
|
||||
}
|
||||
if listExisting {
|
||||
req := pkgHandle.newNetlinkRequest(unix.RTM_GETROUTE,
|
||||
unix.NLM_F_DUMP)
|
||||
infmsg := nl.NewIfInfomsg(unix.AF_UNSPEC)
|
||||
req.AddData(infmsg)
|
||||
if err := s.Send(req); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
go func() {
|
||||
defer close(ch)
|
||||
for {
|
||||
@@ -838,6 +1045,20 @@ func routeSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- RouteUpdate, done <
|
||||
return
|
||||
}
|
||||
for _, m := range msgs {
|
||||
if m.Header.Type == unix.NLMSG_DONE {
|
||||
continue
|
||||
}
|
||||
if m.Header.Type == unix.NLMSG_ERROR {
|
||||
native := nl.NativeEndian()
|
||||
error := int32(native.Uint32(m.Data[0:4]))
|
||||
if error == 0 {
|
||||
continue
|
||||
}
|
||||
if cberr != nil {
|
||||
cberr(syscall.Errno(-error))
|
||||
}
|
||||
return
|
||||
}
|
||||
route, err := deserializeRoute(m.Data)
|
||||
if err != nil {
|
||||
if cberr != nil {
|
||||
|
||||
2
vendor/github.com/vishvananda/netlink/rule_linux.go
generated
vendored
2
vendor/github.com/vishvananda/netlink/rule_linux.go
generated
vendored
@@ -144,7 +144,7 @@ func ruleHandle(rule *Rule, req *nl.NetlinkRequest) error {
|
||||
req.AddData(nl.NewRtAttr(nl.FRA_OIFNAME, []byte(rule.OifName)))
|
||||
}
|
||||
if rule.Goto >= 0 {
|
||||
msg.Type = nl.FR_ACT_NOP
|
||||
msg.Type = nl.FR_ACT_GOTO
|
||||
b := make([]byte, 4)
|
||||
native.PutUint32(b, uint32(rule.Goto))
|
||||
req.AddData(nl.NewRtAttr(nl.FRA_GOTO, b))
|
||||
|
||||
26
vendor/github.com/vishvananda/netlink/xfrm_policy.go
generated
vendored
26
vendor/github.com/vishvananda/netlink/xfrm_policy.go
generated
vendored
@@ -35,6 +35,25 @@ func (d Dir) String() string {
|
||||
return fmt.Sprintf("socket %d", d-XFRM_SOCKET_IN)
|
||||
}
|
||||
|
||||
// PolicyAction is an enum representing an ipsec policy action.
|
||||
type PolicyAction uint8
|
||||
|
||||
const (
|
||||
XFRM_POLICY_ALLOW PolicyAction = 0
|
||||
XFRM_POLICY_BLOCK PolicyAction = 1
|
||||
)
|
||||
|
||||
func (a PolicyAction) String() string {
|
||||
switch a {
|
||||
case XFRM_POLICY_ALLOW:
|
||||
return "allow"
|
||||
case XFRM_POLICY_BLOCK:
|
||||
return "block"
|
||||
default:
|
||||
return fmt.Sprintf("action %d", a)
|
||||
}
|
||||
}
|
||||
|
||||
// XfrmPolicyTmpl encapsulates a rule for the base addresses of an ipsec
|
||||
// policy. These rules are matched with XfrmState to determine encryption
|
||||
// and authentication algorithms.
|
||||
@@ -64,11 +83,14 @@ type XfrmPolicy struct {
|
||||
Dir Dir
|
||||
Priority int
|
||||
Index int
|
||||
Action PolicyAction
|
||||
Ifindex int
|
||||
Ifid int
|
||||
Mark *XfrmMark
|
||||
Tmpls []XfrmPolicyTmpl
|
||||
}
|
||||
|
||||
func (p XfrmPolicy) String() string {
|
||||
return fmt.Sprintf("{Dst: %v, Src: %v, Proto: %s, DstPort: %d, SrcPort: %d, Dir: %s, Priority: %d, Index: %d, Mark: %s, Tmpls: %s}",
|
||||
p.Dst, p.Src, p.Proto, p.DstPort, p.SrcPort, p.Dir, p.Priority, p.Index, p.Mark, p.Tmpls)
|
||||
return fmt.Sprintf("{Dst: %v, Src: %v, Proto: %s, DstPort: %d, SrcPort: %d, Dir: %s, Priority: %d, Index: %d, Action: %s, Ifindex: %d, Ifid: %d, Mark: %s, Tmpls: %s}",
|
||||
p.Dst, p.Src, p.Proto, p.DstPort, p.SrcPort, p.Dir, p.Priority, p.Index, p.Action, p.Ifindex, p.Ifid, p.Mark, p.Tmpls)
|
||||
}
|
||||
|
||||
19
vendor/github.com/vishvananda/netlink/xfrm_policy_linux.go
generated
vendored
19
vendor/github.com/vishvananda/netlink/xfrm_policy_linux.go
generated
vendored
@@ -27,6 +27,7 @@ func selFromPolicy(sel *nl.XfrmSelector, policy *XfrmPolicy) {
|
||||
if sel.Sport != 0 {
|
||||
sel.SportMask = ^uint16(0)
|
||||
}
|
||||
sel.Ifindex = int32(policy.Ifindex)
|
||||
}
|
||||
|
||||
// XfrmPolicyAdd will add an xfrm policy to the system.
|
||||
@@ -61,6 +62,7 @@ func (h *Handle) xfrmPolicyAddOrUpdate(policy *XfrmPolicy, nlProto int) error {
|
||||
msg.Priority = uint32(policy.Priority)
|
||||
msg.Index = uint32(policy.Index)
|
||||
msg.Dir = uint8(policy.Dir)
|
||||
msg.Action = uint8(policy.Action)
|
||||
msg.Lft.SoftByteLimit = nl.XFRM_INF
|
||||
msg.Lft.HardByteLimit = nl.XFRM_INF
|
||||
msg.Lft.SoftPacketLimit = nl.XFRM_INF
|
||||
@@ -90,6 +92,9 @@ func (h *Handle) xfrmPolicyAddOrUpdate(policy *XfrmPolicy, nlProto int) error {
|
||||
req.AddData(out)
|
||||
}
|
||||
|
||||
ifId := nl.NewRtAttr(nl.XFRMA_IF_ID, nl.Uint32Attr(uint32(policy.Ifid)))
|
||||
req.AddData(ifId)
|
||||
|
||||
_, err := req.Execute(unix.NETLINK_XFRM, 0)
|
||||
return err
|
||||
}
|
||||
@@ -183,6 +188,9 @@ func (h *Handle) xfrmPolicyGetOrDelete(policy *XfrmPolicy, nlProto int) (*XfrmPo
|
||||
req.AddData(out)
|
||||
}
|
||||
|
||||
ifId := nl.NewRtAttr(nl.XFRMA_IF_ID, nl.Uint32Attr(uint32(policy.Ifid)))
|
||||
req.AddData(ifId)
|
||||
|
||||
resType := nl.XFRM_MSG_NEWPOLICY
|
||||
if nlProto == nl.XFRM_MSG_DELPOLICY {
|
||||
resType = 0
|
||||
@@ -197,12 +205,7 @@ func (h *Handle) xfrmPolicyGetOrDelete(policy *XfrmPolicy, nlProto int) (*XfrmPo
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p, err := parseXfrmPolicy(msgs[0], FAMILY_ALL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return p, nil
|
||||
return parseXfrmPolicy(msgs[0], FAMILY_ALL)
|
||||
}
|
||||
|
||||
func parseXfrmPolicy(m []byte, family int) (*XfrmPolicy, error) {
|
||||
@@ -220,9 +223,11 @@ func parseXfrmPolicy(m []byte, family int) (*XfrmPolicy, error) {
|
||||
policy.Proto = Proto(msg.Sel.Proto)
|
||||
policy.DstPort = int(nl.Swap16(msg.Sel.Dport))
|
||||
policy.SrcPort = int(nl.Swap16(msg.Sel.Sport))
|
||||
policy.Ifindex = int(msg.Sel.Ifindex)
|
||||
policy.Priority = int(msg.Priority)
|
||||
policy.Index = int(msg.Index)
|
||||
policy.Dir = Dir(msg.Dir)
|
||||
policy.Action = PolicyAction(msg.Action)
|
||||
|
||||
attrs, err := nl.ParseRouteAttr(m[msg.Len():])
|
||||
if err != nil {
|
||||
@@ -249,6 +254,8 @@ func parseXfrmPolicy(m []byte, family int) (*XfrmPolicy, error) {
|
||||
policy.Mark = new(XfrmMark)
|
||||
policy.Mark.Value = mark.Value
|
||||
policy.Mark.Mask = mark.Mask
|
||||
case nl.XFRMA_IF_ID:
|
||||
policy.Ifid = int(native.Uint32(attr.Value))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
5
vendor/github.com/vishvananda/netlink/xfrm_state.go
generated
vendored
5
vendor/github.com/vishvananda/netlink/xfrm_state.go
generated
vendored
@@ -94,6 +94,7 @@ type XfrmState struct {
|
||||
Limits XfrmStateLimits
|
||||
Statistics XfrmStateStats
|
||||
Mark *XfrmMark
|
||||
Ifid int
|
||||
Auth *XfrmStateAlgo
|
||||
Crypt *XfrmStateAlgo
|
||||
Aead *XfrmStateAlgo
|
||||
@@ -102,8 +103,8 @@ type XfrmState struct {
|
||||
}
|
||||
|
||||
func (sa XfrmState) String() string {
|
||||
return fmt.Sprintf("Dst: %v, Src: %v, Proto: %s, Mode: %s, SPI: 0x%x, ReqID: 0x%x, ReplayWindow: %d, Mark: %v, Auth: %v, Crypt: %v, Aead: %v, Encap: %v, ESN: %t",
|
||||
sa.Dst, sa.Src, sa.Proto, sa.Mode, sa.Spi, sa.Reqid, sa.ReplayWindow, sa.Mark, sa.Auth, sa.Crypt, sa.Aead, sa.Encap, sa.ESN)
|
||||
return fmt.Sprintf("Dst: %v, Src: %v, Proto: %s, Mode: %s, SPI: 0x%x, ReqID: 0x%x, ReplayWindow: %d, Mark: %v, Ifid: %d, Auth: %v, Crypt: %v, Aead: %v, Encap: %v, ESN: %t",
|
||||
sa.Dst, sa.Src, sa.Proto, sa.Mode, sa.Spi, sa.Reqid, sa.ReplayWindow, sa.Mark, sa.Ifid, sa.Auth, sa.Crypt, sa.Aead, sa.Encap, sa.ESN)
|
||||
}
|
||||
func (sa XfrmState) Print(stats bool) string {
|
||||
if !stats {
|
||||
|
||||
27
vendor/github.com/vishvananda/netlink/xfrm_state_linux.go
generated
vendored
27
vendor/github.com/vishvananda/netlink/xfrm_state_linux.go
generated
vendored
@@ -69,8 +69,10 @@ func writeReplayEsn(replayWindow int) []byte {
|
||||
ReplayWindow: uint32(replayWindow),
|
||||
}
|
||||
|
||||
// taken from iproute2/ip/xfrm_state.c:
|
||||
replayEsn.BmpLen = uint32((replayWindow + (4 * 8) - 1) / (4 * 8))
|
||||
// Linux stores the bitmap to identify the already received sequence packets in blocks of uint32 elements.
|
||||
// Therefore bitmap length is the minimum number of uint32 elements needed. The following is a ceiling operation.
|
||||
bytesPerElem := int(unsafe.Sizeof(replayEsn.BmpLen)) // Any uint32 variable is good for this
|
||||
replayEsn.BmpLen = uint32((replayWindow + (bytesPerElem * 8) - 1) / (bytesPerElem * 8))
|
||||
|
||||
return replayEsn.Serialize()
|
||||
}
|
||||
@@ -157,6 +159,9 @@ func (h *Handle) xfrmStateAddOrUpdate(state *XfrmState, nlProto int) error {
|
||||
req.AddData(out)
|
||||
}
|
||||
|
||||
ifId := nl.NewRtAttr(nl.XFRMA_IF_ID, nl.Uint32Attr(uint32(state.Ifid)))
|
||||
req.AddData(ifId)
|
||||
|
||||
_, err := req.Execute(unix.NETLINK_XFRM, 0)
|
||||
return err
|
||||
}
|
||||
@@ -182,12 +187,7 @@ func (h *Handle) xfrmStateAllocSpi(state *XfrmState) (*XfrmState, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
s, err := parseXfrmState(msgs[0], FAMILY_ALL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s, err
|
||||
return parseXfrmState(msgs[0], FAMILY_ALL)
|
||||
}
|
||||
|
||||
// XfrmStateDel will delete an xfrm state from the system. Note that
|
||||
@@ -273,6 +273,9 @@ func (h *Handle) xfrmStateGetOrDelete(state *XfrmState, nlProto int) (*XfrmState
|
||||
req.AddData(out)
|
||||
}
|
||||
|
||||
ifId := nl.NewRtAttr(nl.XFRMA_IF_ID, nl.Uint32Attr(uint32(state.Ifid)))
|
||||
req.AddData(ifId)
|
||||
|
||||
resType := nl.XFRM_MSG_NEWSA
|
||||
if nlProto == nl.XFRM_MSG_DELSA {
|
||||
resType = 0
|
||||
@@ -370,6 +373,8 @@ func parseXfrmState(m []byte, family int) (*XfrmState, error) {
|
||||
state.Mark = new(XfrmMark)
|
||||
state.Mark.Value = mark.Value
|
||||
state.Mark.Mask = mark.Mask
|
||||
case nl.XFRMA_IF_ID:
|
||||
state.Ifid = int(native.Uint32(attr.Value))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -392,11 +397,7 @@ func (h *Handle) XfrmStateFlush(proto Proto) error {
|
||||
req.AddData(&nl.XfrmUsersaFlush{Proto: uint8(proto)})
|
||||
|
||||
_, err := req.Execute(unix.NETLINK_XFRM, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
|
||||
func limitsToLft(lmts XfrmStateLimits, lft *nl.XfrmLifetimeCfg) {
|
||||
|
||||
124
vendor/golang.org/x/sys/unix/affinity_linux.go
generated
vendored
Normal file
124
vendor/golang.org/x/sys/unix/affinity_linux.go
generated
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
// Copyright 2018 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.
|
||||
|
||||
// CPU affinity functions
|
||||
|
||||
package unix
|
||||
|
||||
import (
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
const cpuSetSize = _CPU_SETSIZE / _NCPUBITS
|
||||
|
||||
// CPUSet represents a CPU affinity mask.
|
||||
type CPUSet [cpuSetSize]cpuMask
|
||||
|
||||
func schedAffinity(trap uintptr, pid int, set *CPUSet) error {
|
||||
_, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set)))
|
||||
if e != 0 {
|
||||
return errnoErr(e)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid.
|
||||
// If pid is 0 the calling thread is used.
|
||||
func SchedGetaffinity(pid int, set *CPUSet) error {
|
||||
return schedAffinity(SYS_SCHED_GETAFFINITY, pid, set)
|
||||
}
|
||||
|
||||
// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid.
|
||||
// If pid is 0 the calling thread is used.
|
||||
func SchedSetaffinity(pid int, set *CPUSet) error {
|
||||
return schedAffinity(SYS_SCHED_SETAFFINITY, pid, set)
|
||||
}
|
||||
|
||||
// Zero clears the set s, so that it contains no CPUs.
|
||||
func (s *CPUSet) Zero() {
|
||||
for i := range s {
|
||||
s[i] = 0
|
||||
}
|
||||
}
|
||||
|
||||
func cpuBitsIndex(cpu int) int {
|
||||
return cpu / _NCPUBITS
|
||||
}
|
||||
|
||||
func cpuBitsMask(cpu int) cpuMask {
|
||||
return cpuMask(1 << (uint(cpu) % _NCPUBITS))
|
||||
}
|
||||
|
||||
// Set adds cpu to the set s.
|
||||
func (s *CPUSet) Set(cpu int) {
|
||||
i := cpuBitsIndex(cpu)
|
||||
if i < len(s) {
|
||||
s[i] |= cpuBitsMask(cpu)
|
||||
}
|
||||
}
|
||||
|
||||
// Clear removes cpu from the set s.
|
||||
func (s *CPUSet) Clear(cpu int) {
|
||||
i := cpuBitsIndex(cpu)
|
||||
if i < len(s) {
|
||||
s[i] &^= cpuBitsMask(cpu)
|
||||
}
|
||||
}
|
||||
|
||||
// IsSet reports whether cpu is in the set s.
|
||||
func (s *CPUSet) IsSet(cpu int) bool {
|
||||
i := cpuBitsIndex(cpu)
|
||||
if i < len(s) {
|
||||
return s[i]&cpuBitsMask(cpu) != 0
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// Count returns the number of CPUs in the set s.
|
||||
func (s *CPUSet) Count() int {
|
||||
c := 0
|
||||
for _, b := range s {
|
||||
c += onesCount64(uint64(b))
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
// onesCount64 is a copy of Go 1.9's math/bits.OnesCount64.
|
||||
// Once this package can require Go 1.9, we can delete this
|
||||
// and update the caller to use bits.OnesCount64.
|
||||
func onesCount64(x uint64) int {
|
||||
const m0 = 0x5555555555555555 // 01010101 ...
|
||||
const m1 = 0x3333333333333333 // 00110011 ...
|
||||
const m2 = 0x0f0f0f0f0f0f0f0f // 00001111 ...
|
||||
const m3 = 0x00ff00ff00ff00ff // etc.
|
||||
const m4 = 0x0000ffff0000ffff
|
||||
|
||||
// Implementation: Parallel summing of adjacent bits.
|
||||
// See "Hacker's Delight", Chap. 5: Counting Bits.
|
||||
// The following pattern shows the general approach:
|
||||
//
|
||||
// x = x>>1&(m0&m) + x&(m0&m)
|
||||
// x = x>>2&(m1&m) + x&(m1&m)
|
||||
// x = x>>4&(m2&m) + x&(m2&m)
|
||||
// x = x>>8&(m3&m) + x&(m3&m)
|
||||
// x = x>>16&(m4&m) + x&(m4&m)
|
||||
// x = x>>32&(m5&m) + x&(m5&m)
|
||||
// return int(x)
|
||||
//
|
||||
// Masking (& operations) can be left away when there's no
|
||||
// danger that a field's sum will carry over into the next
|
||||
// field: Since the result cannot be > 64, 8 bits is enough
|
||||
// and we can ignore the masks for the shifts by 8 and up.
|
||||
// Per "Hacker's Delight", the first line can be simplified
|
||||
// more, but it saves at best one instruction, so we leave
|
||||
// it alone for clarity.
|
||||
const m = 1<<64 - 1
|
||||
x = x>>1&(m0&m) + x&(m0&m)
|
||||
x = x>>2&(m1&m) + x&(m1&m)
|
||||
x = (x>>4 + x) & (m2 & m)
|
||||
x += x >> 8
|
||||
x += x >> 16
|
||||
x += x >> 32
|
||||
return int(x) & (1<<7 - 1)
|
||||
}
|
||||
36
vendor/golang.org/x/sys/unix/asm_linux_386.s
generated
vendored
36
vendor/golang.org/x/sys/unix/asm_linux_386.s
generated
vendored
@@ -10,21 +10,51 @@
|
||||
// System calls for 386, Linux
|
||||
//
|
||||
|
||||
// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80
|
||||
// instead of the glibc-specific "CALL 0x10(GS)".
|
||||
#define INVOKE_SYSCALL INT $0x80
|
||||
|
||||
// Just jump to package syscall's implementation for all these functions.
|
||||
// The runtime may know about them.
|
||||
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
||||
JMP syscall·Syscall(SB)
|
||||
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
||||
JMP syscall·Syscall6(SB)
|
||||
|
||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
|
||||
CALL runtime·entersyscall(SB)
|
||||
MOVL trap+0(FP), AX // syscall entry
|
||||
MOVL a1+4(FP), BX
|
||||
MOVL a2+8(FP), CX
|
||||
MOVL a3+12(FP), DX
|
||||
MOVL $0, SI
|
||||
MOVL $0, DI
|
||||
INVOKE_SYSCALL
|
||||
MOVL AX, r1+16(FP)
|
||||
MOVL DX, r2+20(FP)
|
||||
CALL runtime·exitsyscall(SB)
|
||||
RET
|
||||
|
||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
||||
JMP syscall·RawSyscall(SB)
|
||||
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
||||
JMP syscall·RawSyscall6(SB)
|
||||
|
||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
|
||||
MOVL trap+0(FP), AX // syscall entry
|
||||
MOVL a1+4(FP), BX
|
||||
MOVL a2+8(FP), CX
|
||||
MOVL a3+12(FP), DX
|
||||
MOVL $0, SI
|
||||
MOVL $0, DI
|
||||
INVOKE_SYSCALL
|
||||
MOVL AX, r1+16(FP)
|
||||
MOVL DX, r2+20(FP)
|
||||
RET
|
||||
|
||||
TEXT ·socketcall(SB),NOSPLIT,$0-36
|
||||
JMP syscall·socketcall(SB)
|
||||
|
||||
|
||||
30
vendor/golang.org/x/sys/unix/asm_linux_amd64.s
generated
vendored
30
vendor/golang.org/x/sys/unix/asm_linux_amd64.s
generated
vendored
@@ -13,17 +13,45 @@
|
||||
// Just jump to package syscall's implementation for all these functions.
|
||||
// The runtime may know about them.
|
||||
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
||||
JMP syscall·Syscall(SB)
|
||||
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
||||
JMP syscall·Syscall6(SB)
|
||||
|
||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
||||
CALL runtime·entersyscall(SB)
|
||||
MOVQ a1+8(FP), DI
|
||||
MOVQ a2+16(FP), SI
|
||||
MOVQ a3+24(FP), DX
|
||||
MOVQ $0, R10
|
||||
MOVQ $0, R8
|
||||
MOVQ $0, R9
|
||||
MOVQ trap+0(FP), AX // syscall entry
|
||||
SYSCALL
|
||||
MOVQ AX, r1+32(FP)
|
||||
MOVQ DX, r2+40(FP)
|
||||
CALL runtime·exitsyscall(SB)
|
||||
RET
|
||||
|
||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
||||
JMP syscall·RawSyscall(SB)
|
||||
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
||||
JMP syscall·RawSyscall6(SB)
|
||||
|
||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
||||
MOVQ a1+8(FP), DI
|
||||
MOVQ a2+16(FP), SI
|
||||
MOVQ a3+24(FP), DX
|
||||
MOVQ $0, R10
|
||||
MOVQ $0, R8
|
||||
MOVQ $0, R9
|
||||
MOVQ trap+0(FP), AX // syscall entry
|
||||
SYSCALL
|
||||
MOVQ AX, r1+32(FP)
|
||||
MOVQ DX, r2+40(FP)
|
||||
RET
|
||||
|
||||
TEXT ·gettimeofday(SB),NOSPLIT,$0-16
|
||||
JMP syscall·gettimeofday(SB)
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/asm_linux_arm.s
generated
vendored
35
vendor/golang.org/x/sys/unix/asm_linux_arm.s
generated
vendored
@@ -13,17 +13,44 @@
|
||||
// Just jump to package syscall's implementation for all these functions.
|
||||
// The runtime may know about them.
|
||||
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
||||
B syscall·Syscall(SB)
|
||||
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
||||
B syscall·Syscall6(SB)
|
||||
|
||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
|
||||
BL runtime·entersyscall(SB)
|
||||
MOVW trap+0(FP), R7
|
||||
MOVW a1+4(FP), R0
|
||||
MOVW a2+8(FP), R1
|
||||
MOVW a3+12(FP), R2
|
||||
MOVW $0, R3
|
||||
MOVW $0, R4
|
||||
MOVW $0, R5
|
||||
SWI $0
|
||||
MOVW R0, r1+16(FP)
|
||||
MOVW $0, R0
|
||||
MOVW R0, r2+20(FP)
|
||||
BL runtime·exitsyscall(SB)
|
||||
RET
|
||||
|
||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
||||
B syscall·RawSyscall(SB)
|
||||
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
||||
B syscall·RawSyscall6(SB)
|
||||
|
||||
TEXT ·seek(SB),NOSPLIT,$0-32
|
||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
|
||||
MOVW trap+0(FP), R7 // syscall entry
|
||||
MOVW a1+4(FP), R0
|
||||
MOVW a2+8(FP), R1
|
||||
MOVW a3+12(FP), R2
|
||||
SWI $0
|
||||
MOVW R0, r1+16(FP)
|
||||
MOVW $0, R0
|
||||
MOVW R0, r2+20(FP)
|
||||
RET
|
||||
|
||||
TEXT ·seek(SB),NOSPLIT,$0-28
|
||||
B syscall·seek(SB)
|
||||
|
||||
30
vendor/golang.org/x/sys/unix/asm_linux_arm64.s
generated
vendored
30
vendor/golang.org/x/sys/unix/asm_linux_arm64.s
generated
vendored
@@ -11,14 +11,42 @@
|
||||
// Just jump to package syscall's implementation for all these functions.
|
||||
// The runtime may know about them.
|
||||
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
||||
B syscall·Syscall(SB)
|
||||
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
||||
B syscall·Syscall6(SB)
|
||||
|
||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
||||
BL runtime·entersyscall(SB)
|
||||
MOVD a1+8(FP), R0
|
||||
MOVD a2+16(FP), R1
|
||||
MOVD a3+24(FP), R2
|
||||
MOVD $0, R3
|
||||
MOVD $0, R4
|
||||
MOVD $0, R5
|
||||
MOVD trap+0(FP), R8 // syscall entry
|
||||
SVC
|
||||
MOVD R0, r1+32(FP) // r1
|
||||
MOVD R1, r2+40(FP) // r2
|
||||
BL runtime·exitsyscall(SB)
|
||||
RET
|
||||
|
||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
||||
B syscall·RawSyscall(SB)
|
||||
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
||||
B syscall·RawSyscall6(SB)
|
||||
|
||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
||||
MOVD a1+8(FP), R0
|
||||
MOVD a2+16(FP), R1
|
||||
MOVD a3+24(FP), R2
|
||||
MOVD $0, R3
|
||||
MOVD $0, R4
|
||||
MOVD $0, R5
|
||||
MOVD trap+0(FP), R8 // syscall entry
|
||||
SVC
|
||||
MOVD R0, r1+32(FP)
|
||||
MOVD R1, r2+40(FP)
|
||||
RET
|
||||
|
||||
36
vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
generated
vendored
36
vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
generated
vendored
@@ -15,14 +15,42 @@
|
||||
// Just jump to package syscall's implementation for all these functions.
|
||||
// The runtime may know about them.
|
||||
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
||||
JMP syscall·Syscall(SB)
|
||||
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
||||
JMP syscall·Syscall6(SB)
|
||||
|
||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
||||
JAL runtime·entersyscall(SB)
|
||||
MOVV a1+8(FP), R4
|
||||
MOVV a2+16(FP), R5
|
||||
MOVV a3+24(FP), R6
|
||||
MOVV R0, R7
|
||||
MOVV R0, R8
|
||||
MOVV R0, R9
|
||||
MOVV trap+0(FP), R2 // syscall entry
|
||||
SYSCALL
|
||||
MOVV R2, r1+32(FP)
|
||||
MOVV R3, r2+40(FP)
|
||||
JAL runtime·exitsyscall(SB)
|
||||
RET
|
||||
|
||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
||||
JMP syscall·RawSyscall(SB)
|
||||
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
||||
JMP syscall·RawSyscall6(SB)
|
||||
|
||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
||||
MOVV a1+8(FP), R4
|
||||
MOVV a2+16(FP), R5
|
||||
MOVV a3+24(FP), R6
|
||||
MOVV R0, R7
|
||||
MOVV R0, R8
|
||||
MOVV R0, R9
|
||||
MOVV trap+0(FP), R2 // syscall entry
|
||||
SYSCALL
|
||||
MOVV R2, r1+32(FP)
|
||||
MOVV R3, r2+40(FP)
|
||||
RET
|
||||
|
||||
33
vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
generated
vendored
33
vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
generated
vendored
@@ -15,17 +15,40 @@
|
||||
// Just jump to package syscall's implementation for all these functions.
|
||||
// The runtime may know about them.
|
||||
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
||||
JMP syscall·Syscall(SB)
|
||||
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
||||
JMP syscall·Syscall6(SB)
|
||||
|
||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
||||
JMP syscall·Syscall9(SB)
|
||||
|
||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
|
||||
JAL runtime·entersyscall(SB)
|
||||
MOVW a1+4(FP), R4
|
||||
MOVW a2+8(FP), R5
|
||||
MOVW a3+12(FP), R6
|
||||
MOVW R0, R7
|
||||
MOVW trap+0(FP), R2 // syscall entry
|
||||
SYSCALL
|
||||
MOVW R2, r1+16(FP) // r1
|
||||
MOVW R3, r2+20(FP) // r2
|
||||
JAL runtime·exitsyscall(SB)
|
||||
RET
|
||||
|
||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
||||
JMP syscall·RawSyscall(SB)
|
||||
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
||||
JMP syscall·RawSyscall6(SB)
|
||||
|
||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
|
||||
MOVW a1+4(FP), R4
|
||||
MOVW a2+8(FP), R5
|
||||
MOVW a3+12(FP), R6
|
||||
MOVW trap+0(FP), R2 // syscall entry
|
||||
SYSCALL
|
||||
MOVW R2, r1+16(FP)
|
||||
MOVW R3, r2+20(FP)
|
||||
RET
|
||||
|
||||
30
vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
generated
vendored
30
vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
generated
vendored
@@ -15,14 +15,42 @@
|
||||
// Just jump to package syscall's implementation for all these functions.
|
||||
// The runtime may know about them.
|
||||
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
||||
BR syscall·Syscall(SB)
|
||||
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
||||
BR syscall·Syscall6(SB)
|
||||
|
||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
||||
BL runtime·entersyscall(SB)
|
||||
MOVD a1+8(FP), R3
|
||||
MOVD a2+16(FP), R4
|
||||
MOVD a3+24(FP), R5
|
||||
MOVD R0, R6
|
||||
MOVD R0, R7
|
||||
MOVD R0, R8
|
||||
MOVD trap+0(FP), R9 // syscall entry
|
||||
SYSCALL R9
|
||||
MOVD R3, r1+32(FP)
|
||||
MOVD R4, r2+40(FP)
|
||||
BL runtime·exitsyscall(SB)
|
||||
RET
|
||||
|
||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
||||
BR syscall·RawSyscall(SB)
|
||||
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
||||
BR syscall·RawSyscall6(SB)
|
||||
|
||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
||||
MOVD a1+8(FP), R3
|
||||
MOVD a2+16(FP), R4
|
||||
MOVD a3+24(FP), R5
|
||||
MOVD R0, R6
|
||||
MOVD R0, R7
|
||||
MOVD R0, R8
|
||||
MOVD trap+0(FP), R9 // syscall entry
|
||||
SYSCALL R9
|
||||
MOVD R3, r1+32(FP)
|
||||
MOVD R4, r2+40(FP)
|
||||
RET
|
||||
|
||||
28
vendor/golang.org/x/sys/unix/asm_linux_s390x.s
generated
vendored
28
vendor/golang.org/x/sys/unix/asm_linux_s390x.s
generated
vendored
@@ -21,8 +21,36 @@ TEXT ·Syscall(SB),NOSPLIT,$0-56
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
||||
BR syscall·Syscall6(SB)
|
||||
|
||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
||||
BL runtime·entersyscall(SB)
|
||||
MOVD a1+8(FP), R2
|
||||
MOVD a2+16(FP), R3
|
||||
MOVD a3+24(FP), R4
|
||||
MOVD $0, R5
|
||||
MOVD $0, R6
|
||||
MOVD $0, R7
|
||||
MOVD trap+0(FP), R1 // syscall entry
|
||||
SYSCALL
|
||||
MOVD R2, r1+32(FP)
|
||||
MOVD R3, r2+40(FP)
|
||||
BL runtime·exitsyscall(SB)
|
||||
RET
|
||||
|
||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
||||
BR syscall·RawSyscall(SB)
|
||||
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
||||
BR syscall·RawSyscall6(SB)
|
||||
|
||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
||||
MOVD a1+8(FP), R2
|
||||
MOVD a2+16(FP), R3
|
||||
MOVD a3+24(FP), R4
|
||||
MOVD $0, R5
|
||||
MOVD $0, R6
|
||||
MOVD $0, R7
|
||||
MOVD trap+0(FP), R1 // syscall entry
|
||||
SYSCALL
|
||||
MOVD R2, r1+32(FP)
|
||||
MOVD R3, r2+40(FP)
|
||||
RET
|
||||
|
||||
89
vendor/golang.org/x/sys/unix/dirent.go
generated
vendored
89
vendor/golang.org/x/sys/unix/dirent.go
generated
vendored
@@ -6,97 +6,12 @@
|
||||
|
||||
package unix
|
||||
|
||||
import "unsafe"
|
||||
|
||||
// readInt returns the size-bytes unsigned integer in native byte order at offset off.
|
||||
func readInt(b []byte, off, size uintptr) (u uint64, ok bool) {
|
||||
if len(b) < int(off+size) {
|
||||
return 0, false
|
||||
}
|
||||
if isBigEndian {
|
||||
return readIntBE(b[off:], size), true
|
||||
}
|
||||
return readIntLE(b[off:], size), true
|
||||
}
|
||||
|
||||
func readIntBE(b []byte, size uintptr) uint64 {
|
||||
switch size {
|
||||
case 1:
|
||||
return uint64(b[0])
|
||||
case 2:
|
||||
_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808
|
||||
return uint64(b[1]) | uint64(b[0])<<8
|
||||
case 4:
|
||||
_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808
|
||||
return uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24
|
||||
case 8:
|
||||
_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808
|
||||
return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |
|
||||
uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56
|
||||
default:
|
||||
panic("syscall: readInt with unsupported size")
|
||||
}
|
||||
}
|
||||
|
||||
func readIntLE(b []byte, size uintptr) uint64 {
|
||||
switch size {
|
||||
case 1:
|
||||
return uint64(b[0])
|
||||
case 2:
|
||||
_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808
|
||||
return uint64(b[0]) | uint64(b[1])<<8
|
||||
case 4:
|
||||
_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808
|
||||
return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24
|
||||
case 8:
|
||||
_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808
|
||||
return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |
|
||||
uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
|
||||
default:
|
||||
panic("syscall: readInt with unsupported size")
|
||||
}
|
||||
}
|
||||
import "syscall"
|
||||
|
||||
// ParseDirent parses up to max directory entries in buf,
|
||||
// appending the names to names. It returns the number of
|
||||
// bytes consumed from buf, the number of entries added
|
||||
// to names, and the new names slice.
|
||||
func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
|
||||
origlen := len(buf)
|
||||
count = 0
|
||||
for max != 0 && len(buf) > 0 {
|
||||
reclen, ok := direntReclen(buf)
|
||||
if !ok || reclen > uint64(len(buf)) {
|
||||
return origlen, count, names
|
||||
}
|
||||
rec := buf[:reclen]
|
||||
buf = buf[reclen:]
|
||||
ino, ok := direntIno(rec)
|
||||
if !ok {
|
||||
break
|
||||
}
|
||||
if ino == 0 { // File absent in directory.
|
||||
continue
|
||||
}
|
||||
const namoff = uint64(unsafe.Offsetof(Dirent{}.Name))
|
||||
namlen, ok := direntNamlen(rec)
|
||||
if !ok || namoff+namlen > uint64(len(rec)) {
|
||||
break
|
||||
}
|
||||
name := rec[namoff : namoff+namlen]
|
||||
for i, c := range name {
|
||||
if c == 0 {
|
||||
name = name[:i]
|
||||
break
|
||||
}
|
||||
}
|
||||
// Check for useless names before allocating a string.
|
||||
if string(name) == "." || string(name) == ".." {
|
||||
continue
|
||||
}
|
||||
max--
|
||||
count++
|
||||
names = append(names, string(name))
|
||||
}
|
||||
return origlen - len(buf), count, names
|
||||
return syscall.ParseDirent(buf, max, names)
|
||||
}
|
||||
|
||||
4
vendor/golang.org/x/sys/unix/env_unix.go
generated
vendored
4
vendor/golang.org/x/sys/unix/env_unix.go
generated
vendored
@@ -25,3 +25,7 @@ func Clearenv() {
|
||||
func Environ() []string {
|
||||
return syscall.Environ()
|
||||
}
|
||||
|
||||
func Unsetenv(key string) error {
|
||||
return syscall.Unsetenv(key)
|
||||
}
|
||||
|
||||
14
vendor/golang.org/x/sys/unix/env_unset.go
generated
vendored
14
vendor/golang.org/x/sys/unix/env_unset.go
generated
vendored
@@ -1,14 +0,0 @@
|
||||
// Copyright 2014 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 go1.4
|
||||
|
||||
package unix
|
||||
|
||||
import "syscall"
|
||||
|
||||
func Unsetenv(key string) error {
|
||||
// This was added in Go 1.4.
|
||||
return syscall.Unsetenv(key)
|
||||
}
|
||||
15
vendor/golang.org/x/sys/unix/gccgo.go
generated
vendored
15
vendor/golang.org/x/sys/unix/gccgo.go
generated
vendored
@@ -11,9 +11,19 @@ import "syscall"
|
||||
// We can't use the gc-syntax .s files for gccgo. On the plus side
|
||||
// much of the functionality can be written directly in Go.
|
||||
|
||||
//extern gccgoRealSyscallNoError
|
||||
func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)
|
||||
|
||||
//extern gccgoRealSyscall
|
||||
func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
|
||||
|
||||
func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
|
||||
syscall.Entersyscall()
|
||||
r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
||||
syscall.Exitsyscall()
|
||||
return r, 0
|
||||
}
|
||||
|
||||
func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
||||
syscall.Entersyscall()
|
||||
r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
||||
@@ -35,6 +45,11 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
|
||||
return r, 0, syscall.Errno(errno)
|
||||
}
|
||||
|
||||
func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
|
||||
r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
||||
return r, 0
|
||||
}
|
||||
|
||||
func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
||||
r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
||||
return r, 0, syscall.Errno(errno)
|
||||
|
||||
6
vendor/golang.org/x/sys/unix/gccgo_c.c
generated
vendored
6
vendor/golang.org/x/sys/unix/gccgo_c.c
generated
vendored
@@ -31,6 +31,12 @@ gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintp
|
||||
return r;
|
||||
}
|
||||
|
||||
uintptr_t
|
||||
gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
|
||||
{
|
||||
return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
|
||||
}
|
||||
|
||||
// Define the use function in C so that it is not inlined.
|
||||
|
||||
extern void use(void *) __asm__ (GOSYM_PREFIX GOPKGPATH ".use") __attribute__((noinline));
|
||||
|
||||
14
vendor/golang.org/x/sys/unix/mkpost.go
generated
vendored
14
vendor/golang.org/x/sys/unix/mkpost.go
generated
vendored
@@ -61,14 +61,18 @@ func main() {
|
||||
convertUtsnameRegex := regexp.MustCompile(`((Sys|Node|Domain)name|Release|Version|Machine)(\s+)\[(\d+)\]u?int8`)
|
||||
b = convertUtsnameRegex.ReplaceAll(b, []byte("$1$3[$4]byte"))
|
||||
|
||||
// Remove spare fields (e.g. in Statx_t)
|
||||
spareFieldsRegex := regexp.MustCompile(`X__spare\S*`)
|
||||
b = spareFieldsRegex.ReplaceAll(b, []byte("_"))
|
||||
|
||||
// Remove cgo padding fields
|
||||
removePaddingFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`)
|
||||
b = removePaddingFieldsRegex.ReplaceAll(b, []byte("_"))
|
||||
|
||||
// We refuse to export private fields on s390x
|
||||
if goarch == "s390x" && goos == "linux" {
|
||||
// Remove cgo padding fields
|
||||
removeFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`)
|
||||
b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
|
||||
|
||||
// Remove padding, hidden, or unused fields
|
||||
removeFieldsRegex = regexp.MustCompile(`X_\S+`)
|
||||
removeFieldsRegex = regexp.MustCompile(`\bX_\S+`)
|
||||
b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
|
||||
}
|
||||
|
||||
|
||||
12
vendor/golang.org/x/sys/unix/syscall_bsd.go
generated
vendored
12
vendor/golang.org/x/sys/unix/syscall_bsd.go
generated
vendored
@@ -352,6 +352,18 @@ func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
|
||||
return &value, err
|
||||
}
|
||||
|
||||
// GetsockoptString returns the string value of the socket option opt for the
|
||||
// socket associated with fd at the given socket level.
|
||||
func GetsockoptString(fd, level, opt int) (string, error) {
|
||||
buf := make([]byte, 256)
|
||||
vallen := _Socklen(len(buf))
|
||||
err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return string(buf[:vallen-1]), nil
|
||||
}
|
||||
|
||||
//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
|
||||
//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
|
||||
//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
|
||||
|
||||
13
vendor/golang.org/x/sys/unix/syscall_darwin.go
generated
vendored
13
vendor/golang.org/x/sys/unix/syscall_darwin.go
generated
vendored
@@ -36,6 +36,7 @@ func Getwd() (string, error) {
|
||||
return "", ENOTSUP
|
||||
}
|
||||
|
||||
// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
|
||||
type SockaddrDatalink struct {
|
||||
Len uint8
|
||||
Family uint8
|
||||
@@ -76,18 +77,6 @@ func nametomib(name string) (mib []_C_int, err error) {
|
||||
return buf[0 : n/siz], nil
|
||||
}
|
||||
|
||||
func direntIno(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
|
||||
}
|
||||
|
||||
func direntReclen(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
|
||||
}
|
||||
|
||||
func direntNamlen(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
|
||||
}
|
||||
|
||||
//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
|
||||
func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }
|
||||
func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }
|
||||
|
||||
17
vendor/golang.org/x/sys/unix/syscall_dragonfly.go
generated
vendored
17
vendor/golang.org/x/sys/unix/syscall_dragonfly.go
generated
vendored
@@ -14,6 +14,7 @@ package unix
|
||||
|
||||
import "unsafe"
|
||||
|
||||
// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
|
||||
type SockaddrDatalink struct {
|
||||
Len uint8
|
||||
Family uint8
|
||||
@@ -56,22 +57,6 @@ func nametomib(name string) (mib []_C_int, err error) {
|
||||
return buf[0 : n/siz], nil
|
||||
}
|
||||
|
||||
func direntIno(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))
|
||||
}
|
||||
|
||||
func direntReclen(buf []byte) (uint64, bool) {
|
||||
namlen, ok := direntNamlen(buf)
|
||||
if !ok {
|
||||
return 0, false
|
||||
}
|
||||
return (16 + namlen + 1 + 7) &^ 7, true
|
||||
}
|
||||
|
||||
func direntNamlen(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
|
||||
}
|
||||
|
||||
//sysnb pipe() (r int, w int, err error)
|
||||
|
||||
func Pipe(p []int) (err error) {
|
||||
|
||||
25
vendor/golang.org/x/sys/unix/syscall_freebsd.go
generated
vendored
25
vendor/golang.org/x/sys/unix/syscall_freebsd.go
generated
vendored
@@ -14,6 +14,7 @@ package unix
|
||||
|
||||
import "unsafe"
|
||||
|
||||
// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
|
||||
type SockaddrDatalink struct {
|
||||
Len uint8
|
||||
Family uint8
|
||||
@@ -54,18 +55,6 @@ func nametomib(name string) (mib []_C_int, err error) {
|
||||
return buf[0 : n/siz], nil
|
||||
}
|
||||
|
||||
func direntIno(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))
|
||||
}
|
||||
|
||||
func direntReclen(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
|
||||
}
|
||||
|
||||
func direntNamlen(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
|
||||
}
|
||||
|
||||
//sysnb pipe() (r int, w int, err error)
|
||||
|
||||
func Pipe(p []int) (err error) {
|
||||
@@ -293,7 +282,6 @@ func Listxattr(file string, dest []byte) (sz int, err error) {
|
||||
|
||||
// FreeBSD won't allow you to list xattrs from multiple namespaces
|
||||
s := 0
|
||||
var e error
|
||||
for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
|
||||
stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)
|
||||
|
||||
@@ -305,7 +293,6 @@ func Listxattr(file string, dest []byte) (sz int, err error) {
|
||||
* we don't have read permissions on, so don't ignore those errors
|
||||
*/
|
||||
if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
|
||||
e = nil
|
||||
continue
|
||||
} else if e != nil {
|
||||
return s, e
|
||||
@@ -319,7 +306,7 @@ func Listxattr(file string, dest []byte) (sz int, err error) {
|
||||
d = initxattrdest(dest, s)
|
||||
}
|
||||
|
||||
return s, e
|
||||
return s, nil
|
||||
}
|
||||
|
||||
func Flistxattr(fd int, dest []byte) (sz int, err error) {
|
||||
@@ -327,11 +314,9 @@ func Flistxattr(fd int, dest []byte) (sz int, err error) {
|
||||
destsiz := len(dest)
|
||||
|
||||
s := 0
|
||||
var e error
|
||||
for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
|
||||
stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)
|
||||
if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
|
||||
e = nil
|
||||
continue
|
||||
} else if e != nil {
|
||||
return s, e
|
||||
@@ -345,7 +330,7 @@ func Flistxattr(fd int, dest []byte) (sz int, err error) {
|
||||
d = initxattrdest(dest, s)
|
||||
}
|
||||
|
||||
return s, e
|
||||
return s, nil
|
||||
}
|
||||
|
||||
func Llistxattr(link string, dest []byte) (sz int, err error) {
|
||||
@@ -353,11 +338,9 @@ func Llistxattr(link string, dest []byte) (sz int, err error) {
|
||||
destsiz := len(dest)
|
||||
|
||||
s := 0
|
||||
var e error
|
||||
for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
|
||||
stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)
|
||||
if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
|
||||
e = nil
|
||||
continue
|
||||
} else if e != nil {
|
||||
return s, e
|
||||
@@ -371,7 +354,7 @@ func Llistxattr(link string, dest []byte) (sz int, err error) {
|
||||
d = initxattrdest(dest, s)
|
||||
}
|
||||
|
||||
return s, e
|
||||
return s, nil
|
||||
}
|
||||
|
||||
//sys ioctl(fd int, req uint, arg uintptr) (err error)
|
||||
|
||||
48
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
48
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
@@ -413,6 +413,7 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||
return unsafe.Pointer(&sa.raw), sl, nil
|
||||
}
|
||||
|
||||
// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets.
|
||||
type SockaddrLinklayer struct {
|
||||
Protocol uint16
|
||||
Ifindex int
|
||||
@@ -439,6 +440,7 @@ func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||
return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil
|
||||
}
|
||||
|
||||
// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets.
|
||||
type SockaddrNetlink struct {
|
||||
Family uint16
|
||||
Pad uint16
|
||||
@@ -455,6 +457,8 @@ func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||
return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil
|
||||
}
|
||||
|
||||
// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets
|
||||
// using the HCI protocol.
|
||||
type SockaddrHCI struct {
|
||||
Dev uint16
|
||||
Channel uint16
|
||||
@@ -468,6 +472,31 @@ func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||
return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil
|
||||
}
|
||||
|
||||
// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets
|
||||
// using the L2CAP protocol.
|
||||
type SockaddrL2 struct {
|
||||
PSM uint16
|
||||
CID uint16
|
||||
Addr [6]uint8
|
||||
AddrType uint8
|
||||
raw RawSockaddrL2
|
||||
}
|
||||
|
||||
func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||
sa.raw.Family = AF_BLUETOOTH
|
||||
psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))
|
||||
psm[0] = byte(sa.PSM)
|
||||
psm[1] = byte(sa.PSM >> 8)
|
||||
for i := 0; i < len(sa.Addr); i++ {
|
||||
sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i]
|
||||
}
|
||||
cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid))
|
||||
cid[0] = byte(sa.CID)
|
||||
cid[1] = byte(sa.CID >> 8)
|
||||
sa.raw.Bdaddr_type = sa.AddrType
|
||||
return unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil
|
||||
}
|
||||
|
||||
// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets.
|
||||
// The RxID and TxID fields are used for transport protocol addressing in
|
||||
// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with
|
||||
@@ -1190,22 +1219,6 @@ func ReadDirent(fd int, buf []byte) (n int, err error) {
|
||||
return Getdents(fd, buf)
|
||||
}
|
||||
|
||||
func direntIno(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
|
||||
}
|
||||
|
||||
func direntReclen(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
|
||||
}
|
||||
|
||||
func direntNamlen(buf []byte) (uint64, bool) {
|
||||
reclen, ok := direntReclen(buf)
|
||||
if !ok {
|
||||
return 0, false
|
||||
}
|
||||
return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true
|
||||
}
|
||||
|
||||
//sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error)
|
||||
|
||||
func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {
|
||||
@@ -1311,6 +1324,7 @@ func Setgid(uid int) (err error) {
|
||||
|
||||
//sys Setpriority(which int, who int, prio int) (err error)
|
||||
//sys Setxattr(path string, attr string, data []byte, flags int) (err error)
|
||||
//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)
|
||||
//sys Sync()
|
||||
//sys Syncfs(fd int) (err error)
|
||||
//sysnb Sysinfo(info *Sysinfo_t) (err error)
|
||||
@@ -1448,11 +1462,9 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
|
||||
// RtSigtimedwait
|
||||
// SchedGetPriorityMax
|
||||
// SchedGetPriorityMin
|
||||
// SchedGetaffinity
|
||||
// SchedGetparam
|
||||
// SchedGetscheduler
|
||||
// SchedRrGetInterval
|
||||
// SchedSetaffinity
|
||||
// SchedSetparam
|
||||
// SchedYield
|
||||
// Security
|
||||
|
||||
14
vendor/golang.org/x/sys/unix/syscall_linux_gc.go
generated
vendored
Normal file
14
vendor/golang.org/x/sys/unix/syscall_linux_gc.go
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
// Copyright 2018 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 linux,!gccgo
|
||||
|
||||
package unix
|
||||
|
||||
// SyscallNoError may be used instead of Syscall for syscalls that don't fail.
|
||||
func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
|
||||
|
||||
// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't
|
||||
// fail.
|
||||
func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
|
||||
13
vendor/golang.org/x/sys/unix/syscall_netbsd.go
generated
vendored
13
vendor/golang.org/x/sys/unix/syscall_netbsd.go
generated
vendored
@@ -17,6 +17,7 @@ import (
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
|
||||
type SockaddrDatalink struct {
|
||||
Len uint8
|
||||
Family uint8
|
||||
@@ -92,18 +93,6 @@ func nametomib(name string) (mib []_C_int, err error) {
|
||||
return mib, nil
|
||||
}
|
||||
|
||||
func direntIno(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))
|
||||
}
|
||||
|
||||
func direntReclen(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
|
||||
}
|
||||
|
||||
func direntNamlen(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
|
||||
}
|
||||
|
||||
//sysnb pipe() (fd1 int, fd2 int, err error)
|
||||
func Pipe(p []int) (err error) {
|
||||
if len(p) != 2 {
|
||||
|
||||
13
vendor/golang.org/x/sys/unix/syscall_openbsd.go
generated
vendored
13
vendor/golang.org/x/sys/unix/syscall_openbsd.go
generated
vendored
@@ -18,6 +18,7 @@ import (
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
|
||||
type SockaddrDatalink struct {
|
||||
Len uint8
|
||||
Family uint8
|
||||
@@ -42,18 +43,6 @@ func nametomib(name string) (mib []_C_int, err error) {
|
||||
return nil, EINVAL
|
||||
}
|
||||
|
||||
func direntIno(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))
|
||||
}
|
||||
|
||||
func direntReclen(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
|
||||
}
|
||||
|
||||
func direntNamlen(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
|
||||
}
|
||||
|
||||
//sysnb pipe(p *[2]_C_int) (err error)
|
||||
func Pipe(p []int) (err error) {
|
||||
if len(p) != 2 {
|
||||
|
||||
30
vendor/golang.org/x/sys/unix/syscall_solaris.go
generated
vendored
30
vendor/golang.org/x/sys/unix/syscall_solaris.go
generated
vendored
@@ -23,6 +23,7 @@ type syscallFunc uintptr
|
||||
func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
|
||||
func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
|
||||
|
||||
// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
|
||||
type SockaddrDatalink struct {
|
||||
Family uint16
|
||||
Index uint16
|
||||
@@ -34,22 +35,6 @@ type SockaddrDatalink struct {
|
||||
raw RawSockaddrDatalink
|
||||
}
|
||||
|
||||
func direntIno(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
|
||||
}
|
||||
|
||||
func direntReclen(buf []byte) (uint64, bool) {
|
||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
|
||||
}
|
||||
|
||||
func direntNamlen(buf []byte) (uint64, bool) {
|
||||
reclen, ok := direntReclen(buf)
|
||||
if !ok {
|
||||
return 0, false
|
||||
}
|
||||
return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true
|
||||
}
|
||||
|
||||
//sysnb pipe(p *[2]_C_int) (n int, err error)
|
||||
|
||||
func Pipe(p []int) (err error) {
|
||||
@@ -130,6 +115,18 @@ func Getsockname(fd int) (sa Sockaddr, err error) {
|
||||
return anyToSockaddr(&rsa)
|
||||
}
|
||||
|
||||
// GetsockoptString returns the string value of the socket option opt for the
|
||||
// socket associated with fd at the given socket level.
|
||||
func GetsockoptString(fd, level, opt int) (string, error) {
|
||||
buf := make([]byte, 256)
|
||||
vallen := _Socklen(len(buf))
|
||||
err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return string(buf[:vallen-1]), nil
|
||||
}
|
||||
|
||||
const ImplementsGetwd = true
|
||||
|
||||
//sys Getcwd(buf []byte) (n int, err error)
|
||||
@@ -646,6 +643,7 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
|
||||
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
|
||||
//sys Rmdir(path string) (err error)
|
||||
//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek
|
||||
//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
|
||||
//sysnb Setegid(egid int) (err error)
|
||||
//sysnb Seteuid(euid int) (err error)
|
||||
//sysnb Setgid(gid int) (err error)
|
||||
|
||||
7
vendor/golang.org/x/sys/unix/syscall_unix.go
generated
vendored
7
vendor/golang.org/x/sys/unix/syscall_unix.go
generated
vendored
@@ -50,8 +50,7 @@ func errnoErr(e syscall.Errno) error {
|
||||
return e
|
||||
}
|
||||
|
||||
// clen returns the index of the first NULL byte in n or len(n) if n contains no
|
||||
// NULL byte or len(n) if n contains no NULL byte
|
||||
// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.
|
||||
func clen(n []byte) int {
|
||||
for i := 0; i < len(n); i++ {
|
||||
if n[i] == 0 {
|
||||
@@ -149,16 +148,19 @@ func Write(fd int, p []byte) (n int, err error) {
|
||||
// creation of IPv6 sockets to return EAFNOSUPPORT.
|
||||
var SocketDisableIPv6 bool
|
||||
|
||||
// Sockaddr represents a socket address.
|
||||
type Sockaddr interface {
|
||||
sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs
|
||||
}
|
||||
|
||||
// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.
|
||||
type SockaddrInet4 struct {
|
||||
Port int
|
||||
Addr [4]byte
|
||||
raw RawSockaddrInet4
|
||||
}
|
||||
|
||||
// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.
|
||||
type SockaddrInet6 struct {
|
||||
Port int
|
||||
ZoneId uint32
|
||||
@@ -166,6 +168,7 @@ type SockaddrInet6 struct {
|
||||
raw RawSockaddrInet6
|
||||
}
|
||||
|
||||
// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.
|
||||
type SockaddrUnix struct {
|
||||
Name string
|
||||
raw RawSockaddrUnix
|
||||
|
||||
55
vendor/golang.org/x/sys/unix/zerrors_linux_386.go
generated
vendored
55
vendor/golang.org/x/sys/unix/zerrors_linux_386.go
generated
vendored
@@ -121,6 +121,7 @@ const (
|
||||
ARPHRD_PPP = 0x200
|
||||
ARPHRD_PRONET = 0x4
|
||||
ARPHRD_RAWHDLC = 0x206
|
||||
ARPHRD_RAWIP = 0x207
|
||||
ARPHRD_ROSE = 0x10e
|
||||
ARPHRD_RSRVD = 0x104
|
||||
ARPHRD_SIT = 0x308
|
||||
@@ -390,6 +391,7 @@ const (
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
ETH_P_FCOE = 0x8906
|
||||
ETH_P_FIP = 0x8914
|
||||
ETH_P_HDLC = 0x19
|
||||
@@ -398,6 +400,7 @@ const (
|
||||
ETH_P_IEEE802154 = 0xf6
|
||||
ETH_P_IEEEPUP = 0xa00
|
||||
ETH_P_IEEEPUPAT = 0xa01
|
||||
ETH_P_IFE = 0xed3e
|
||||
ETH_P_IP = 0x800
|
||||
ETH_P_IPV6 = 0x86dd
|
||||
ETH_P_IPX = 0x8137
|
||||
@@ -408,11 +411,13 @@ const (
|
||||
ETH_P_LOOP = 0x60
|
||||
ETH_P_LOOPBACK = 0x9000
|
||||
ETH_P_MACSEC = 0x88e5
|
||||
ETH_P_MAP = 0xf9
|
||||
ETH_P_MOBITEX = 0x15
|
||||
ETH_P_MPLS_MC = 0x8848
|
||||
ETH_P_MPLS_UC = 0x8847
|
||||
ETH_P_MVRP = 0x88f5
|
||||
ETH_P_NCSI = 0x88f8
|
||||
ETH_P_NSH = 0x894f
|
||||
ETH_P_PAE = 0x888e
|
||||
ETH_P_PAUSE = 0x8808
|
||||
ETH_P_PHONET = 0xf5
|
||||
@@ -476,6 +481,7 @@ const (
|
||||
FS_POLICY_FLAGS_PAD_8 = 0x1
|
||||
FS_POLICY_FLAGS_PAD_MASK = 0x3
|
||||
FS_POLICY_FLAGS_VALID = 0x3
|
||||
F_ADD_SEALS = 0x409
|
||||
F_DUPFD = 0x0
|
||||
F_DUPFD_CLOEXEC = 0x406
|
||||
F_EXLCK = 0x4
|
||||
@@ -488,6 +494,9 @@ const (
|
||||
F_GETOWN_EX = 0x10
|
||||
F_GETPIPE_SZ = 0x408
|
||||
F_GETSIG = 0xb
|
||||
F_GET_FILE_RW_HINT = 0x40d
|
||||
F_GET_RW_HINT = 0x40b
|
||||
F_GET_SEALS = 0x40a
|
||||
F_LOCK = 0x1
|
||||
F_NOTIFY = 0x402
|
||||
F_OFD_GETLK = 0x24
|
||||
@@ -495,6 +504,10 @@ const (
|
||||
F_OFD_SETLKW = 0x26
|
||||
F_OK = 0x0
|
||||
F_RDLCK = 0x0
|
||||
F_SEAL_GROW = 0x4
|
||||
F_SEAL_SEAL = 0x1
|
||||
F_SEAL_SHRINK = 0x2
|
||||
F_SEAL_WRITE = 0x8
|
||||
F_SETFD = 0x2
|
||||
F_SETFL = 0x4
|
||||
F_SETLEASE = 0x400
|
||||
@@ -506,6 +519,8 @@ const (
|
||||
F_SETOWN_EX = 0xf
|
||||
F_SETPIPE_SZ = 0x407
|
||||
F_SETSIG = 0xa
|
||||
F_SET_FILE_RW_HINT = 0x40e
|
||||
F_SET_RW_HINT = 0x40c
|
||||
F_SHLCK = 0x8
|
||||
F_TEST = 0x3
|
||||
F_TLOCK = 0x2
|
||||
@@ -561,6 +576,8 @@ const (
|
||||
IFF_MASTER = 0x400
|
||||
IFF_MULTICAST = 0x1000
|
||||
IFF_MULTI_QUEUE = 0x100
|
||||
IFF_NAPI = 0x10
|
||||
IFF_NAPI_FRAGS = 0x20
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
@@ -845,6 +862,7 @@ const (
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
MADV_KEEPONFORK = 0x13
|
||||
MADV_MERGEABLE = 0xc
|
||||
MADV_NOHUGEPAGE = 0xf
|
||||
MADV_NORMAL = 0x0
|
||||
@@ -853,6 +871,7 @@ const (
|
||||
MADV_SEQUENTIAL = 0x2
|
||||
MADV_UNMERGEABLE = 0xd
|
||||
MADV_WILLNEED = 0x3
|
||||
MADV_WIPEONFORK = 0x12
|
||||
MAP_32BIT = 0x40
|
||||
MAP_ANON = 0x20
|
||||
MAP_ANONYMOUS = 0x20
|
||||
@@ -899,6 +918,7 @@ const (
|
||||
MSG_TRYHARD = 0x4
|
||||
MSG_WAITALL = 0x100
|
||||
MSG_WAITFORONE = 0x10000
|
||||
MSG_ZEROCOPY = 0x4000000
|
||||
MS_ACTIVE = 0x40000000
|
||||
MS_ASYNC = 0x1
|
||||
MS_BIND = 0x1000
|
||||
@@ -998,6 +1018,7 @@ const (
|
||||
NLM_F_EXCL = 0x200
|
||||
NLM_F_MATCH = 0x200
|
||||
NLM_F_MULTI = 0x2
|
||||
NLM_F_NONREC = 0x100
|
||||
NLM_F_REPLACE = 0x100
|
||||
NLM_F_REQUEST = 0x1
|
||||
NLM_F_ROOT = 0x100
|
||||
@@ -1196,6 +1217,11 @@ const (
|
||||
PR_SET_TIMING = 0xe
|
||||
PR_SET_TSC = 0x1a
|
||||
PR_SET_UNALIGN = 0x6
|
||||
PR_SVE_GET_VL = 0x33
|
||||
PR_SVE_SET_VL = 0x32
|
||||
PR_SVE_SET_VL_ONEXEC = 0x40000
|
||||
PR_SVE_VL_INHERIT = 0x20000
|
||||
PR_SVE_VL_LEN_MASK = 0xffff
|
||||
PR_TASK_PERF_EVENTS_DISABLE = 0x1f
|
||||
PR_TASK_PERF_EVENTS_ENABLE = 0x20
|
||||
PR_TIMING_STATISTICAL = 0x0
|
||||
@@ -1282,6 +1308,7 @@ const (
|
||||
RTAX_ADVMSS = 0x8
|
||||
RTAX_CC_ALGO = 0x10
|
||||
RTAX_CWND = 0x7
|
||||
RTAX_FASTOPEN_NO_COOKIE = 0x11
|
||||
RTAX_FEATURES = 0xc
|
||||
RTAX_FEATURE_ALLFRAG = 0x8
|
||||
RTAX_FEATURE_ECN = 0x1
|
||||
@@ -1292,7 +1319,7 @@ const (
|
||||
RTAX_INITCWND = 0xb
|
||||
RTAX_INITRWND = 0xe
|
||||
RTAX_LOCK = 0x1
|
||||
RTAX_MAX = 0x10
|
||||
RTAX_MAX = 0x11
|
||||
RTAX_MTU = 0x2
|
||||
RTAX_QUICKACK = 0xf
|
||||
RTAX_REORDERING = 0x9
|
||||
@@ -1566,6 +1593,7 @@ const (
|
||||
SOL_SOCKET = 0x1
|
||||
SOL_TCP = 0x6
|
||||
SOL_TIPC = 0x10f
|
||||
SOL_TLS = 0x11a
|
||||
SOL_X25 = 0x106
|
||||
SOMAXCONN = 0x80
|
||||
SO_ACCEPTCONN = 0x1e
|
||||
@@ -1634,10 +1662,32 @@ const (
|
||||
SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
|
||||
SO_VM_SOCKETS_TRUSTED = 0x5
|
||||
SO_WIFI_STATUS = 0x29
|
||||
SO_ZEROCOPY = 0x3c
|
||||
SPLICE_F_GIFT = 0x8
|
||||
SPLICE_F_MORE = 0x4
|
||||
SPLICE_F_MOVE = 0x1
|
||||
SPLICE_F_NONBLOCK = 0x2
|
||||
STATX_ALL = 0xfff
|
||||
STATX_ATIME = 0x20
|
||||
STATX_ATTR_APPEND = 0x20
|
||||
STATX_ATTR_AUTOMOUNT = 0x1000
|
||||
STATX_ATTR_COMPRESSED = 0x4
|
||||
STATX_ATTR_ENCRYPTED = 0x800
|
||||
STATX_ATTR_IMMUTABLE = 0x10
|
||||
STATX_ATTR_NODUMP = 0x40
|
||||
STATX_BASIC_STATS = 0x7ff
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MODE = 0x2
|
||||
STATX_MTIME = 0x40
|
||||
STATX_NLINK = 0x4
|
||||
STATX_SIZE = 0x200
|
||||
STATX_TYPE = 0x1
|
||||
STATX_UID = 0x8
|
||||
STATX__RESERVED = 0x80000000
|
||||
S_BLKSIZE = 0x200
|
||||
S_IEXEC = 0x40
|
||||
S_IFBLK = 0x6000
|
||||
@@ -1709,6 +1759,8 @@ const (
|
||||
TCP_MAXWIN = 0xffff
|
||||
TCP_MAX_WINSHIFT = 0xe
|
||||
TCP_MD5SIG = 0xe
|
||||
TCP_MD5SIG_EXT = 0x20
|
||||
TCP_MD5SIG_FLAG_PREFIX = 0x1
|
||||
TCP_MD5SIG_MAXKEYLEN = 0x50
|
||||
TCP_MSS = 0x200
|
||||
TCP_MSS_DEFAULT = 0x218
|
||||
@@ -1729,6 +1781,7 @@ const (
|
||||
TCP_THIN_DUPACK = 0x11
|
||||
TCP_THIN_LINEAR_TIMEOUTS = 0x10
|
||||
TCP_TIMESTAMP = 0x18
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCSAFLUSH = 0x2
|
||||
|
||||
55
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
generated
vendored
55
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
generated
vendored
@@ -121,6 +121,7 @@ const (
|
||||
ARPHRD_PPP = 0x200
|
||||
ARPHRD_PRONET = 0x4
|
||||
ARPHRD_RAWHDLC = 0x206
|
||||
ARPHRD_RAWIP = 0x207
|
||||
ARPHRD_ROSE = 0x10e
|
||||
ARPHRD_RSRVD = 0x104
|
||||
ARPHRD_SIT = 0x308
|
||||
@@ -390,6 +391,7 @@ const (
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
ETH_P_FCOE = 0x8906
|
||||
ETH_P_FIP = 0x8914
|
||||
ETH_P_HDLC = 0x19
|
||||
@@ -398,6 +400,7 @@ const (
|
||||
ETH_P_IEEE802154 = 0xf6
|
||||
ETH_P_IEEEPUP = 0xa00
|
||||
ETH_P_IEEEPUPAT = 0xa01
|
||||
ETH_P_IFE = 0xed3e
|
||||
ETH_P_IP = 0x800
|
||||
ETH_P_IPV6 = 0x86dd
|
||||
ETH_P_IPX = 0x8137
|
||||
@@ -408,11 +411,13 @@ const (
|
||||
ETH_P_LOOP = 0x60
|
||||
ETH_P_LOOPBACK = 0x9000
|
||||
ETH_P_MACSEC = 0x88e5
|
||||
ETH_P_MAP = 0xf9
|
||||
ETH_P_MOBITEX = 0x15
|
||||
ETH_P_MPLS_MC = 0x8848
|
||||
ETH_P_MPLS_UC = 0x8847
|
||||
ETH_P_MVRP = 0x88f5
|
||||
ETH_P_NCSI = 0x88f8
|
||||
ETH_P_NSH = 0x894f
|
||||
ETH_P_PAE = 0x888e
|
||||
ETH_P_PAUSE = 0x8808
|
||||
ETH_P_PHONET = 0xf5
|
||||
@@ -476,6 +481,7 @@ const (
|
||||
FS_POLICY_FLAGS_PAD_8 = 0x1
|
||||
FS_POLICY_FLAGS_PAD_MASK = 0x3
|
||||
FS_POLICY_FLAGS_VALID = 0x3
|
||||
F_ADD_SEALS = 0x409
|
||||
F_DUPFD = 0x0
|
||||
F_DUPFD_CLOEXEC = 0x406
|
||||
F_EXLCK = 0x4
|
||||
@@ -488,6 +494,9 @@ const (
|
||||
F_GETOWN_EX = 0x10
|
||||
F_GETPIPE_SZ = 0x408
|
||||
F_GETSIG = 0xb
|
||||
F_GET_FILE_RW_HINT = 0x40d
|
||||
F_GET_RW_HINT = 0x40b
|
||||
F_GET_SEALS = 0x40a
|
||||
F_LOCK = 0x1
|
||||
F_NOTIFY = 0x402
|
||||
F_OFD_GETLK = 0x24
|
||||
@@ -495,6 +504,10 @@ const (
|
||||
F_OFD_SETLKW = 0x26
|
||||
F_OK = 0x0
|
||||
F_RDLCK = 0x0
|
||||
F_SEAL_GROW = 0x4
|
||||
F_SEAL_SEAL = 0x1
|
||||
F_SEAL_SHRINK = 0x2
|
||||
F_SEAL_WRITE = 0x8
|
||||
F_SETFD = 0x2
|
||||
F_SETFL = 0x4
|
||||
F_SETLEASE = 0x400
|
||||
@@ -506,6 +519,8 @@ const (
|
||||
F_SETOWN_EX = 0xf
|
||||
F_SETPIPE_SZ = 0x407
|
||||
F_SETSIG = 0xa
|
||||
F_SET_FILE_RW_HINT = 0x40e
|
||||
F_SET_RW_HINT = 0x40c
|
||||
F_SHLCK = 0x8
|
||||
F_TEST = 0x3
|
||||
F_TLOCK = 0x2
|
||||
@@ -561,6 +576,8 @@ const (
|
||||
IFF_MASTER = 0x400
|
||||
IFF_MULTICAST = 0x1000
|
||||
IFF_MULTI_QUEUE = 0x100
|
||||
IFF_NAPI = 0x10
|
||||
IFF_NAPI_FRAGS = 0x20
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
@@ -845,6 +862,7 @@ const (
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
MADV_KEEPONFORK = 0x13
|
||||
MADV_MERGEABLE = 0xc
|
||||
MADV_NOHUGEPAGE = 0xf
|
||||
MADV_NORMAL = 0x0
|
||||
@@ -853,6 +871,7 @@ const (
|
||||
MADV_SEQUENTIAL = 0x2
|
||||
MADV_UNMERGEABLE = 0xd
|
||||
MADV_WILLNEED = 0x3
|
||||
MADV_WIPEONFORK = 0x12
|
||||
MAP_32BIT = 0x40
|
||||
MAP_ANON = 0x20
|
||||
MAP_ANONYMOUS = 0x20
|
||||
@@ -899,6 +918,7 @@ const (
|
||||
MSG_TRYHARD = 0x4
|
||||
MSG_WAITALL = 0x100
|
||||
MSG_WAITFORONE = 0x10000
|
||||
MSG_ZEROCOPY = 0x4000000
|
||||
MS_ACTIVE = 0x40000000
|
||||
MS_ASYNC = 0x1
|
||||
MS_BIND = 0x1000
|
||||
@@ -998,6 +1018,7 @@ const (
|
||||
NLM_F_EXCL = 0x200
|
||||
NLM_F_MATCH = 0x200
|
||||
NLM_F_MULTI = 0x2
|
||||
NLM_F_NONREC = 0x100
|
||||
NLM_F_REPLACE = 0x100
|
||||
NLM_F_REQUEST = 0x1
|
||||
NLM_F_ROOT = 0x100
|
||||
@@ -1196,6 +1217,11 @@ const (
|
||||
PR_SET_TIMING = 0xe
|
||||
PR_SET_TSC = 0x1a
|
||||
PR_SET_UNALIGN = 0x6
|
||||
PR_SVE_GET_VL = 0x33
|
||||
PR_SVE_SET_VL = 0x32
|
||||
PR_SVE_SET_VL_ONEXEC = 0x40000
|
||||
PR_SVE_VL_INHERIT = 0x20000
|
||||
PR_SVE_VL_LEN_MASK = 0xffff
|
||||
PR_TASK_PERF_EVENTS_DISABLE = 0x1f
|
||||
PR_TASK_PERF_EVENTS_ENABLE = 0x20
|
||||
PR_TIMING_STATISTICAL = 0x0
|
||||
@@ -1283,6 +1309,7 @@ const (
|
||||
RTAX_ADVMSS = 0x8
|
||||
RTAX_CC_ALGO = 0x10
|
||||
RTAX_CWND = 0x7
|
||||
RTAX_FASTOPEN_NO_COOKIE = 0x11
|
||||
RTAX_FEATURES = 0xc
|
||||
RTAX_FEATURE_ALLFRAG = 0x8
|
||||
RTAX_FEATURE_ECN = 0x1
|
||||
@@ -1293,7 +1320,7 @@ const (
|
||||
RTAX_INITCWND = 0xb
|
||||
RTAX_INITRWND = 0xe
|
||||
RTAX_LOCK = 0x1
|
||||
RTAX_MAX = 0x10
|
||||
RTAX_MAX = 0x11
|
||||
RTAX_MTU = 0x2
|
||||
RTAX_QUICKACK = 0xf
|
||||
RTAX_REORDERING = 0x9
|
||||
@@ -1567,6 +1594,7 @@ const (
|
||||
SOL_SOCKET = 0x1
|
||||
SOL_TCP = 0x6
|
||||
SOL_TIPC = 0x10f
|
||||
SOL_TLS = 0x11a
|
||||
SOL_X25 = 0x106
|
||||
SOMAXCONN = 0x80
|
||||
SO_ACCEPTCONN = 0x1e
|
||||
@@ -1635,10 +1663,32 @@ const (
|
||||
SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
|
||||
SO_VM_SOCKETS_TRUSTED = 0x5
|
||||
SO_WIFI_STATUS = 0x29
|
||||
SO_ZEROCOPY = 0x3c
|
||||
SPLICE_F_GIFT = 0x8
|
||||
SPLICE_F_MORE = 0x4
|
||||
SPLICE_F_MOVE = 0x1
|
||||
SPLICE_F_NONBLOCK = 0x2
|
||||
STATX_ALL = 0xfff
|
||||
STATX_ATIME = 0x20
|
||||
STATX_ATTR_APPEND = 0x20
|
||||
STATX_ATTR_AUTOMOUNT = 0x1000
|
||||
STATX_ATTR_COMPRESSED = 0x4
|
||||
STATX_ATTR_ENCRYPTED = 0x800
|
||||
STATX_ATTR_IMMUTABLE = 0x10
|
||||
STATX_ATTR_NODUMP = 0x40
|
||||
STATX_BASIC_STATS = 0x7ff
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MODE = 0x2
|
||||
STATX_MTIME = 0x40
|
||||
STATX_NLINK = 0x4
|
||||
STATX_SIZE = 0x200
|
||||
STATX_TYPE = 0x1
|
||||
STATX_UID = 0x8
|
||||
STATX__RESERVED = 0x80000000
|
||||
S_BLKSIZE = 0x200
|
||||
S_IEXEC = 0x40
|
||||
S_IFBLK = 0x6000
|
||||
@@ -1710,6 +1760,8 @@ const (
|
||||
TCP_MAXWIN = 0xffff
|
||||
TCP_MAX_WINSHIFT = 0xe
|
||||
TCP_MD5SIG = 0xe
|
||||
TCP_MD5SIG_EXT = 0x20
|
||||
TCP_MD5SIG_FLAG_PREFIX = 0x1
|
||||
TCP_MD5SIG_MAXKEYLEN = 0x50
|
||||
TCP_MSS = 0x200
|
||||
TCP_MSS_DEFAULT = 0x218
|
||||
@@ -1730,6 +1782,7 @@ const (
|
||||
TCP_THIN_DUPACK = 0x11
|
||||
TCP_THIN_LINEAR_TIMEOUTS = 0x10
|
||||
TCP_TIMESTAMP = 0x18
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCSAFLUSH = 0x2
|
||||
|
||||
58
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
generated
vendored
58
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
generated
vendored
@@ -121,6 +121,7 @@ const (
|
||||
ARPHRD_PPP = 0x200
|
||||
ARPHRD_PRONET = 0x4
|
||||
ARPHRD_RAWHDLC = 0x206
|
||||
ARPHRD_RAWIP = 0x207
|
||||
ARPHRD_ROSE = 0x10e
|
||||
ARPHRD_RSRVD = 0x104
|
||||
ARPHRD_SIT = 0x308
|
||||
@@ -390,6 +391,7 @@ const (
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
ETH_P_FCOE = 0x8906
|
||||
ETH_P_FIP = 0x8914
|
||||
ETH_P_HDLC = 0x19
|
||||
@@ -398,6 +400,7 @@ const (
|
||||
ETH_P_IEEE802154 = 0xf6
|
||||
ETH_P_IEEEPUP = 0xa00
|
||||
ETH_P_IEEEPUPAT = 0xa01
|
||||
ETH_P_IFE = 0xed3e
|
||||
ETH_P_IP = 0x800
|
||||
ETH_P_IPV6 = 0x86dd
|
||||
ETH_P_IPX = 0x8137
|
||||
@@ -408,11 +411,13 @@ const (
|
||||
ETH_P_LOOP = 0x60
|
||||
ETH_P_LOOPBACK = 0x9000
|
||||
ETH_P_MACSEC = 0x88e5
|
||||
ETH_P_MAP = 0xf9
|
||||
ETH_P_MOBITEX = 0x15
|
||||
ETH_P_MPLS_MC = 0x8848
|
||||
ETH_P_MPLS_UC = 0x8847
|
||||
ETH_P_MVRP = 0x88f5
|
||||
ETH_P_NCSI = 0x88f8
|
||||
ETH_P_NSH = 0x894f
|
||||
ETH_P_PAE = 0x888e
|
||||
ETH_P_PAUSE = 0x8808
|
||||
ETH_P_PHONET = 0xf5
|
||||
@@ -476,6 +481,7 @@ const (
|
||||
FS_POLICY_FLAGS_PAD_8 = 0x1
|
||||
FS_POLICY_FLAGS_PAD_MASK = 0x3
|
||||
FS_POLICY_FLAGS_VALID = 0x3
|
||||
F_ADD_SEALS = 0x409
|
||||
F_DUPFD = 0x0
|
||||
F_DUPFD_CLOEXEC = 0x406
|
||||
F_EXLCK = 0x4
|
||||
@@ -488,6 +494,9 @@ const (
|
||||
F_GETOWN_EX = 0x10
|
||||
F_GETPIPE_SZ = 0x408
|
||||
F_GETSIG = 0xb
|
||||
F_GET_FILE_RW_HINT = 0x40d
|
||||
F_GET_RW_HINT = 0x40b
|
||||
F_GET_SEALS = 0x40a
|
||||
F_LOCK = 0x1
|
||||
F_NOTIFY = 0x402
|
||||
F_OFD_GETLK = 0x24
|
||||
@@ -495,6 +504,10 @@ const (
|
||||
F_OFD_SETLKW = 0x26
|
||||
F_OK = 0x0
|
||||
F_RDLCK = 0x0
|
||||
F_SEAL_GROW = 0x4
|
||||
F_SEAL_SEAL = 0x1
|
||||
F_SEAL_SHRINK = 0x2
|
||||
F_SEAL_WRITE = 0x8
|
||||
F_SETFD = 0x2
|
||||
F_SETFL = 0x4
|
||||
F_SETLEASE = 0x400
|
||||
@@ -506,6 +519,8 @@ const (
|
||||
F_SETOWN_EX = 0xf
|
||||
F_SETPIPE_SZ = 0x407
|
||||
F_SETSIG = 0xa
|
||||
F_SET_FILE_RW_HINT = 0x40e
|
||||
F_SET_RW_HINT = 0x40c
|
||||
F_SHLCK = 0x8
|
||||
F_TEST = 0x3
|
||||
F_TLOCK = 0x2
|
||||
@@ -561,6 +576,8 @@ const (
|
||||
IFF_MASTER = 0x400
|
||||
IFF_MULTICAST = 0x1000
|
||||
IFF_MULTI_QUEUE = 0x100
|
||||
IFF_NAPI = 0x10
|
||||
IFF_NAPI_FRAGS = 0x20
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
@@ -845,6 +862,7 @@ const (
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
MADV_KEEPONFORK = 0x13
|
||||
MADV_MERGEABLE = 0xc
|
||||
MADV_NOHUGEPAGE = 0xf
|
||||
MADV_NORMAL = 0x0
|
||||
@@ -853,6 +871,7 @@ const (
|
||||
MADV_SEQUENTIAL = 0x2
|
||||
MADV_UNMERGEABLE = 0xd
|
||||
MADV_WILLNEED = 0x3
|
||||
MADV_WIPEONFORK = 0x12
|
||||
MAP_ANON = 0x20
|
||||
MAP_ANONYMOUS = 0x20
|
||||
MAP_DENYWRITE = 0x800
|
||||
@@ -898,6 +917,7 @@ const (
|
||||
MSG_TRYHARD = 0x4
|
||||
MSG_WAITALL = 0x100
|
||||
MSG_WAITFORONE = 0x10000
|
||||
MSG_ZEROCOPY = 0x4000000
|
||||
MS_ACTIVE = 0x40000000
|
||||
MS_ASYNC = 0x1
|
||||
MS_BIND = 0x1000
|
||||
@@ -997,6 +1017,7 @@ const (
|
||||
NLM_F_EXCL = 0x200
|
||||
NLM_F_MATCH = 0x200
|
||||
NLM_F_MULTI = 0x2
|
||||
NLM_F_NONREC = 0x100
|
||||
NLM_F_REPLACE = 0x100
|
||||
NLM_F_REQUEST = 0x1
|
||||
NLM_F_ROOT = 0x100
|
||||
@@ -1195,6 +1216,11 @@ const (
|
||||
PR_SET_TIMING = 0xe
|
||||
PR_SET_TSC = 0x1a
|
||||
PR_SET_UNALIGN = 0x6
|
||||
PR_SVE_GET_VL = 0x33
|
||||
PR_SVE_SET_VL = 0x32
|
||||
PR_SVE_SET_VL_ONEXEC = 0x40000
|
||||
PR_SVE_VL_INHERIT = 0x20000
|
||||
PR_SVE_VL_LEN_MASK = 0xffff
|
||||
PR_TASK_PERF_EVENTS_DISABLE = 0x1f
|
||||
PR_TASK_PERF_EVENTS_ENABLE = 0x20
|
||||
PR_TIMING_STATISTICAL = 0x0
|
||||
@@ -1216,6 +1242,9 @@ const (
|
||||
PTRACE_EVENT_VFORK_DONE = 0x5
|
||||
PTRACE_GETCRUNCHREGS = 0x19
|
||||
PTRACE_GETEVENTMSG = 0x4201
|
||||
PTRACE_GETFDPIC = 0x1f
|
||||
PTRACE_GETFDPIC_EXEC = 0x0
|
||||
PTRACE_GETFDPIC_INTERP = 0x1
|
||||
PTRACE_GETFPREGS = 0xe
|
||||
PTRACE_GETHBPREGS = 0x1d
|
||||
PTRACE_GETREGS = 0xc
|
||||
@@ -1287,6 +1316,7 @@ const (
|
||||
RTAX_ADVMSS = 0x8
|
||||
RTAX_CC_ALGO = 0x10
|
||||
RTAX_CWND = 0x7
|
||||
RTAX_FASTOPEN_NO_COOKIE = 0x11
|
||||
RTAX_FEATURES = 0xc
|
||||
RTAX_FEATURE_ALLFRAG = 0x8
|
||||
RTAX_FEATURE_ECN = 0x1
|
||||
@@ -1297,7 +1327,7 @@ const (
|
||||
RTAX_INITCWND = 0xb
|
||||
RTAX_INITRWND = 0xe
|
||||
RTAX_LOCK = 0x1
|
||||
RTAX_MAX = 0x10
|
||||
RTAX_MAX = 0x11
|
||||
RTAX_MTU = 0x2
|
||||
RTAX_QUICKACK = 0xf
|
||||
RTAX_REORDERING = 0x9
|
||||
@@ -1571,6 +1601,7 @@ const (
|
||||
SOL_SOCKET = 0x1
|
||||
SOL_TCP = 0x6
|
||||
SOL_TIPC = 0x10f
|
||||
SOL_TLS = 0x11a
|
||||
SOL_X25 = 0x106
|
||||
SOMAXCONN = 0x80
|
||||
SO_ACCEPTCONN = 0x1e
|
||||
@@ -1639,10 +1670,32 @@ const (
|
||||
SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
|
||||
SO_VM_SOCKETS_TRUSTED = 0x5
|
||||
SO_WIFI_STATUS = 0x29
|
||||
SO_ZEROCOPY = 0x3c
|
||||
SPLICE_F_GIFT = 0x8
|
||||
SPLICE_F_MORE = 0x4
|
||||
SPLICE_F_MOVE = 0x1
|
||||
SPLICE_F_NONBLOCK = 0x2
|
||||
STATX_ALL = 0xfff
|
||||
STATX_ATIME = 0x20
|
||||
STATX_ATTR_APPEND = 0x20
|
||||
STATX_ATTR_AUTOMOUNT = 0x1000
|
||||
STATX_ATTR_COMPRESSED = 0x4
|
||||
STATX_ATTR_ENCRYPTED = 0x800
|
||||
STATX_ATTR_IMMUTABLE = 0x10
|
||||
STATX_ATTR_NODUMP = 0x40
|
||||
STATX_BASIC_STATS = 0x7ff
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MODE = 0x2
|
||||
STATX_MTIME = 0x40
|
||||
STATX_NLINK = 0x4
|
||||
STATX_SIZE = 0x200
|
||||
STATX_TYPE = 0x1
|
||||
STATX_UID = 0x8
|
||||
STATX__RESERVED = 0x80000000
|
||||
S_BLKSIZE = 0x200
|
||||
S_IEXEC = 0x40
|
||||
S_IFBLK = 0x6000
|
||||
@@ -1714,6 +1767,8 @@ const (
|
||||
TCP_MAXWIN = 0xffff
|
||||
TCP_MAX_WINSHIFT = 0xe
|
||||
TCP_MD5SIG = 0xe
|
||||
TCP_MD5SIG_EXT = 0x20
|
||||
TCP_MD5SIG_FLAG_PREFIX = 0x1
|
||||
TCP_MD5SIG_MAXKEYLEN = 0x50
|
||||
TCP_MSS = 0x200
|
||||
TCP_MSS_DEFAULT = 0x218
|
||||
@@ -1734,6 +1789,7 @@ const (
|
||||
TCP_THIN_DUPACK = 0x11
|
||||
TCP_THIN_LINEAR_TIMEOUTS = 0x10
|
||||
TCP_TIMESTAMP = 0x18
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCSAFLUSH = 0x2
|
||||
|
||||
55
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
generated
vendored
55
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
generated
vendored
@@ -121,6 +121,7 @@ const (
|
||||
ARPHRD_PPP = 0x200
|
||||
ARPHRD_PRONET = 0x4
|
||||
ARPHRD_RAWHDLC = 0x206
|
||||
ARPHRD_RAWIP = 0x207
|
||||
ARPHRD_ROSE = 0x10e
|
||||
ARPHRD_RSRVD = 0x104
|
||||
ARPHRD_SIT = 0x308
|
||||
@@ -391,6 +392,7 @@ const (
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
ETH_P_FCOE = 0x8906
|
||||
ETH_P_FIP = 0x8914
|
||||
ETH_P_HDLC = 0x19
|
||||
@@ -399,6 +401,7 @@ const (
|
||||
ETH_P_IEEE802154 = 0xf6
|
||||
ETH_P_IEEEPUP = 0xa00
|
||||
ETH_P_IEEEPUPAT = 0xa01
|
||||
ETH_P_IFE = 0xed3e
|
||||
ETH_P_IP = 0x800
|
||||
ETH_P_IPV6 = 0x86dd
|
||||
ETH_P_IPX = 0x8137
|
||||
@@ -409,11 +412,13 @@ const (
|
||||
ETH_P_LOOP = 0x60
|
||||
ETH_P_LOOPBACK = 0x9000
|
||||
ETH_P_MACSEC = 0x88e5
|
||||
ETH_P_MAP = 0xf9
|
||||
ETH_P_MOBITEX = 0x15
|
||||
ETH_P_MPLS_MC = 0x8848
|
||||
ETH_P_MPLS_UC = 0x8847
|
||||
ETH_P_MVRP = 0x88f5
|
||||
ETH_P_NCSI = 0x88f8
|
||||
ETH_P_NSH = 0x894f
|
||||
ETH_P_PAE = 0x888e
|
||||
ETH_P_PAUSE = 0x8808
|
||||
ETH_P_PHONET = 0xf5
|
||||
@@ -478,6 +483,7 @@ const (
|
||||
FS_POLICY_FLAGS_PAD_8 = 0x1
|
||||
FS_POLICY_FLAGS_PAD_MASK = 0x3
|
||||
FS_POLICY_FLAGS_VALID = 0x3
|
||||
F_ADD_SEALS = 0x409
|
||||
F_DUPFD = 0x0
|
||||
F_DUPFD_CLOEXEC = 0x406
|
||||
F_EXLCK = 0x4
|
||||
@@ -490,6 +496,9 @@ const (
|
||||
F_GETOWN_EX = 0x10
|
||||
F_GETPIPE_SZ = 0x408
|
||||
F_GETSIG = 0xb
|
||||
F_GET_FILE_RW_HINT = 0x40d
|
||||
F_GET_RW_HINT = 0x40b
|
||||
F_GET_SEALS = 0x40a
|
||||
F_LOCK = 0x1
|
||||
F_NOTIFY = 0x402
|
||||
F_OFD_GETLK = 0x24
|
||||
@@ -497,6 +506,10 @@ const (
|
||||
F_OFD_SETLKW = 0x26
|
||||
F_OK = 0x0
|
||||
F_RDLCK = 0x0
|
||||
F_SEAL_GROW = 0x4
|
||||
F_SEAL_SEAL = 0x1
|
||||
F_SEAL_SHRINK = 0x2
|
||||
F_SEAL_WRITE = 0x8
|
||||
F_SETFD = 0x2
|
||||
F_SETFL = 0x4
|
||||
F_SETLEASE = 0x400
|
||||
@@ -508,6 +521,8 @@ const (
|
||||
F_SETOWN_EX = 0xf
|
||||
F_SETPIPE_SZ = 0x407
|
||||
F_SETSIG = 0xa
|
||||
F_SET_FILE_RW_HINT = 0x40e
|
||||
F_SET_RW_HINT = 0x40c
|
||||
F_SHLCK = 0x8
|
||||
F_TEST = 0x3
|
||||
F_TLOCK = 0x2
|
||||
@@ -563,6 +578,8 @@ const (
|
||||
IFF_MASTER = 0x400
|
||||
IFF_MULTICAST = 0x1000
|
||||
IFF_MULTI_QUEUE = 0x100
|
||||
IFF_NAPI = 0x10
|
||||
IFF_NAPI_FRAGS = 0x20
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
@@ -847,6 +864,7 @@ const (
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
MADV_KEEPONFORK = 0x13
|
||||
MADV_MERGEABLE = 0xc
|
||||
MADV_NOHUGEPAGE = 0xf
|
||||
MADV_NORMAL = 0x0
|
||||
@@ -855,6 +873,7 @@ const (
|
||||
MADV_SEQUENTIAL = 0x2
|
||||
MADV_UNMERGEABLE = 0xd
|
||||
MADV_WILLNEED = 0x3
|
||||
MADV_WIPEONFORK = 0x12
|
||||
MAP_ANON = 0x20
|
||||
MAP_ANONYMOUS = 0x20
|
||||
MAP_DENYWRITE = 0x800
|
||||
@@ -900,6 +919,7 @@ const (
|
||||
MSG_TRYHARD = 0x4
|
||||
MSG_WAITALL = 0x100
|
||||
MSG_WAITFORONE = 0x10000
|
||||
MSG_ZEROCOPY = 0x4000000
|
||||
MS_ACTIVE = 0x40000000
|
||||
MS_ASYNC = 0x1
|
||||
MS_BIND = 0x1000
|
||||
@@ -999,6 +1019,7 @@ const (
|
||||
NLM_F_EXCL = 0x200
|
||||
NLM_F_MATCH = 0x200
|
||||
NLM_F_MULTI = 0x2
|
||||
NLM_F_NONREC = 0x100
|
||||
NLM_F_REPLACE = 0x100
|
||||
NLM_F_REQUEST = 0x1
|
||||
NLM_F_ROOT = 0x100
|
||||
@@ -1197,6 +1218,11 @@ const (
|
||||
PR_SET_TIMING = 0xe
|
||||
PR_SET_TSC = 0x1a
|
||||
PR_SET_UNALIGN = 0x6
|
||||
PR_SVE_GET_VL = 0x33
|
||||
PR_SVE_SET_VL = 0x32
|
||||
PR_SVE_SET_VL_ONEXEC = 0x40000
|
||||
PR_SVE_VL_INHERIT = 0x20000
|
||||
PR_SVE_VL_LEN_MASK = 0xffff
|
||||
PR_TASK_PERF_EVENTS_DISABLE = 0x1f
|
||||
PR_TASK_PERF_EVENTS_ENABLE = 0x20
|
||||
PR_TIMING_STATISTICAL = 0x0
|
||||
@@ -1273,6 +1299,7 @@ const (
|
||||
RTAX_ADVMSS = 0x8
|
||||
RTAX_CC_ALGO = 0x10
|
||||
RTAX_CWND = 0x7
|
||||
RTAX_FASTOPEN_NO_COOKIE = 0x11
|
||||
RTAX_FEATURES = 0xc
|
||||
RTAX_FEATURE_ALLFRAG = 0x8
|
||||
RTAX_FEATURE_ECN = 0x1
|
||||
@@ -1283,7 +1310,7 @@ const (
|
||||
RTAX_INITCWND = 0xb
|
||||
RTAX_INITRWND = 0xe
|
||||
RTAX_LOCK = 0x1
|
||||
RTAX_MAX = 0x10
|
||||
RTAX_MAX = 0x11
|
||||
RTAX_MTU = 0x2
|
||||
RTAX_QUICKACK = 0xf
|
||||
RTAX_REORDERING = 0x9
|
||||
@@ -1557,6 +1584,7 @@ const (
|
||||
SOL_SOCKET = 0x1
|
||||
SOL_TCP = 0x6
|
||||
SOL_TIPC = 0x10f
|
||||
SOL_TLS = 0x11a
|
||||
SOL_X25 = 0x106
|
||||
SOMAXCONN = 0x80
|
||||
SO_ACCEPTCONN = 0x1e
|
||||
@@ -1625,10 +1653,32 @@ const (
|
||||
SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
|
||||
SO_VM_SOCKETS_TRUSTED = 0x5
|
||||
SO_WIFI_STATUS = 0x29
|
||||
SO_ZEROCOPY = 0x3c
|
||||
SPLICE_F_GIFT = 0x8
|
||||
SPLICE_F_MORE = 0x4
|
||||
SPLICE_F_MOVE = 0x1
|
||||
SPLICE_F_NONBLOCK = 0x2
|
||||
STATX_ALL = 0xfff
|
||||
STATX_ATIME = 0x20
|
||||
STATX_ATTR_APPEND = 0x20
|
||||
STATX_ATTR_AUTOMOUNT = 0x1000
|
||||
STATX_ATTR_COMPRESSED = 0x4
|
||||
STATX_ATTR_ENCRYPTED = 0x800
|
||||
STATX_ATTR_IMMUTABLE = 0x10
|
||||
STATX_ATTR_NODUMP = 0x40
|
||||
STATX_BASIC_STATS = 0x7ff
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MODE = 0x2
|
||||
STATX_MTIME = 0x40
|
||||
STATX_NLINK = 0x4
|
||||
STATX_SIZE = 0x200
|
||||
STATX_TYPE = 0x1
|
||||
STATX_UID = 0x8
|
||||
STATX__RESERVED = 0x80000000
|
||||
S_BLKSIZE = 0x200
|
||||
S_IEXEC = 0x40
|
||||
S_IFBLK = 0x6000
|
||||
@@ -1700,6 +1750,8 @@ const (
|
||||
TCP_MAXWIN = 0xffff
|
||||
TCP_MAX_WINSHIFT = 0xe
|
||||
TCP_MD5SIG = 0xe
|
||||
TCP_MD5SIG_EXT = 0x20
|
||||
TCP_MD5SIG_FLAG_PREFIX = 0x1
|
||||
TCP_MD5SIG_MAXKEYLEN = 0x50
|
||||
TCP_MSS = 0x200
|
||||
TCP_MSS_DEFAULT = 0x218
|
||||
@@ -1720,6 +1772,7 @@ const (
|
||||
TCP_THIN_DUPACK = 0x11
|
||||
TCP_THIN_LINEAR_TIMEOUTS = 0x10
|
||||
TCP_TIMESTAMP = 0x18
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCSAFLUSH = 0x2
|
||||
|
||||
55
vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
generated
vendored
55
vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
generated
vendored
@@ -121,6 +121,7 @@ const (
|
||||
ARPHRD_PPP = 0x200
|
||||
ARPHRD_PRONET = 0x4
|
||||
ARPHRD_RAWHDLC = 0x206
|
||||
ARPHRD_RAWIP = 0x207
|
||||
ARPHRD_ROSE = 0x10e
|
||||
ARPHRD_RSRVD = 0x104
|
||||
ARPHRD_SIT = 0x308
|
||||
@@ -390,6 +391,7 @@ const (
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
ETH_P_FCOE = 0x8906
|
||||
ETH_P_FIP = 0x8914
|
||||
ETH_P_HDLC = 0x19
|
||||
@@ -398,6 +400,7 @@ const (
|
||||
ETH_P_IEEE802154 = 0xf6
|
||||
ETH_P_IEEEPUP = 0xa00
|
||||
ETH_P_IEEEPUPAT = 0xa01
|
||||
ETH_P_IFE = 0xed3e
|
||||
ETH_P_IP = 0x800
|
||||
ETH_P_IPV6 = 0x86dd
|
||||
ETH_P_IPX = 0x8137
|
||||
@@ -408,11 +411,13 @@ const (
|
||||
ETH_P_LOOP = 0x60
|
||||
ETH_P_LOOPBACK = 0x9000
|
||||
ETH_P_MACSEC = 0x88e5
|
||||
ETH_P_MAP = 0xf9
|
||||
ETH_P_MOBITEX = 0x15
|
||||
ETH_P_MPLS_MC = 0x8848
|
||||
ETH_P_MPLS_UC = 0x8847
|
||||
ETH_P_MVRP = 0x88f5
|
||||
ETH_P_NCSI = 0x88f8
|
||||
ETH_P_NSH = 0x894f
|
||||
ETH_P_PAE = 0x888e
|
||||
ETH_P_PAUSE = 0x8808
|
||||
ETH_P_PHONET = 0xf5
|
||||
@@ -476,6 +481,7 @@ const (
|
||||
FS_POLICY_FLAGS_PAD_8 = 0x1
|
||||
FS_POLICY_FLAGS_PAD_MASK = 0x3
|
||||
FS_POLICY_FLAGS_VALID = 0x3
|
||||
F_ADD_SEALS = 0x409
|
||||
F_DUPFD = 0x0
|
||||
F_DUPFD_CLOEXEC = 0x406
|
||||
F_EXLCK = 0x4
|
||||
@@ -488,6 +494,9 @@ const (
|
||||
F_GETOWN_EX = 0x10
|
||||
F_GETPIPE_SZ = 0x408
|
||||
F_GETSIG = 0xb
|
||||
F_GET_FILE_RW_HINT = 0x40d
|
||||
F_GET_RW_HINT = 0x40b
|
||||
F_GET_SEALS = 0x40a
|
||||
F_LOCK = 0x1
|
||||
F_NOTIFY = 0x402
|
||||
F_OFD_GETLK = 0x24
|
||||
@@ -495,6 +504,10 @@ const (
|
||||
F_OFD_SETLKW = 0x26
|
||||
F_OK = 0x0
|
||||
F_RDLCK = 0x0
|
||||
F_SEAL_GROW = 0x4
|
||||
F_SEAL_SEAL = 0x1
|
||||
F_SEAL_SHRINK = 0x2
|
||||
F_SEAL_WRITE = 0x8
|
||||
F_SETFD = 0x2
|
||||
F_SETFL = 0x4
|
||||
F_SETLEASE = 0x400
|
||||
@@ -506,6 +519,8 @@ const (
|
||||
F_SETOWN_EX = 0xf
|
||||
F_SETPIPE_SZ = 0x407
|
||||
F_SETSIG = 0xa
|
||||
F_SET_FILE_RW_HINT = 0x40e
|
||||
F_SET_RW_HINT = 0x40c
|
||||
F_SHLCK = 0x8
|
||||
F_TEST = 0x3
|
||||
F_TLOCK = 0x2
|
||||
@@ -561,6 +576,8 @@ const (
|
||||
IFF_MASTER = 0x400
|
||||
IFF_MULTICAST = 0x1000
|
||||
IFF_MULTI_QUEUE = 0x100
|
||||
IFF_NAPI = 0x10
|
||||
IFF_NAPI_FRAGS = 0x20
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
@@ -845,6 +862,7 @@ const (
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
MADV_KEEPONFORK = 0x13
|
||||
MADV_MERGEABLE = 0xc
|
||||
MADV_NOHUGEPAGE = 0xf
|
||||
MADV_NORMAL = 0x0
|
||||
@@ -853,6 +871,7 @@ const (
|
||||
MADV_SEQUENTIAL = 0x2
|
||||
MADV_UNMERGEABLE = 0xd
|
||||
MADV_WILLNEED = 0x3
|
||||
MADV_WIPEONFORK = 0x12
|
||||
MAP_ANON = 0x800
|
||||
MAP_ANONYMOUS = 0x800
|
||||
MAP_DENYWRITE = 0x2000
|
||||
@@ -899,6 +918,7 @@ const (
|
||||
MSG_TRYHARD = 0x4
|
||||
MSG_WAITALL = 0x100
|
||||
MSG_WAITFORONE = 0x10000
|
||||
MSG_ZEROCOPY = 0x4000000
|
||||
MS_ACTIVE = 0x40000000
|
||||
MS_ASYNC = 0x1
|
||||
MS_BIND = 0x1000
|
||||
@@ -998,6 +1018,7 @@ const (
|
||||
NLM_F_EXCL = 0x200
|
||||
NLM_F_MATCH = 0x200
|
||||
NLM_F_MULTI = 0x2
|
||||
NLM_F_NONREC = 0x100
|
||||
NLM_F_REPLACE = 0x100
|
||||
NLM_F_REQUEST = 0x1
|
||||
NLM_F_ROOT = 0x100
|
||||
@@ -1196,6 +1217,11 @@ const (
|
||||
PR_SET_TIMING = 0xe
|
||||
PR_SET_TSC = 0x1a
|
||||
PR_SET_UNALIGN = 0x6
|
||||
PR_SVE_GET_VL = 0x33
|
||||
PR_SVE_SET_VL = 0x32
|
||||
PR_SVE_SET_VL_ONEXEC = 0x40000
|
||||
PR_SVE_VL_INHERIT = 0x20000
|
||||
PR_SVE_VL_LEN_MASK = 0xffff
|
||||
PR_TASK_PERF_EVENTS_DISABLE = 0x1f
|
||||
PR_TASK_PERF_EVENTS_ENABLE = 0x20
|
||||
PR_TIMING_STATISTICAL = 0x0
|
||||
@@ -1284,6 +1310,7 @@ const (
|
||||
RTAX_ADVMSS = 0x8
|
||||
RTAX_CC_ALGO = 0x10
|
||||
RTAX_CWND = 0x7
|
||||
RTAX_FASTOPEN_NO_COOKIE = 0x11
|
||||
RTAX_FEATURES = 0xc
|
||||
RTAX_FEATURE_ALLFRAG = 0x8
|
||||
RTAX_FEATURE_ECN = 0x1
|
||||
@@ -1294,7 +1321,7 @@ const (
|
||||
RTAX_INITCWND = 0xb
|
||||
RTAX_INITRWND = 0xe
|
||||
RTAX_LOCK = 0x1
|
||||
RTAX_MAX = 0x10
|
||||
RTAX_MAX = 0x11
|
||||
RTAX_MTU = 0x2
|
||||
RTAX_QUICKACK = 0xf
|
||||
RTAX_REORDERING = 0x9
|
||||
@@ -1568,6 +1595,7 @@ const (
|
||||
SOL_SOCKET = 0xffff
|
||||
SOL_TCP = 0x6
|
||||
SOL_TIPC = 0x10f
|
||||
SOL_TLS = 0x11a
|
||||
SOL_X25 = 0x106
|
||||
SOMAXCONN = 0x80
|
||||
SO_ACCEPTCONN = 0x1009
|
||||
@@ -1637,10 +1665,32 @@ const (
|
||||
SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
|
||||
SO_VM_SOCKETS_TRUSTED = 0x5
|
||||
SO_WIFI_STATUS = 0x29
|
||||
SO_ZEROCOPY = 0x3c
|
||||
SPLICE_F_GIFT = 0x8
|
||||
SPLICE_F_MORE = 0x4
|
||||
SPLICE_F_MOVE = 0x1
|
||||
SPLICE_F_NONBLOCK = 0x2
|
||||
STATX_ALL = 0xfff
|
||||
STATX_ATIME = 0x20
|
||||
STATX_ATTR_APPEND = 0x20
|
||||
STATX_ATTR_AUTOMOUNT = 0x1000
|
||||
STATX_ATTR_COMPRESSED = 0x4
|
||||
STATX_ATTR_ENCRYPTED = 0x800
|
||||
STATX_ATTR_IMMUTABLE = 0x10
|
||||
STATX_ATTR_NODUMP = 0x40
|
||||
STATX_BASIC_STATS = 0x7ff
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MODE = 0x2
|
||||
STATX_MTIME = 0x40
|
||||
STATX_NLINK = 0x4
|
||||
STATX_SIZE = 0x200
|
||||
STATX_TYPE = 0x1
|
||||
STATX_UID = 0x8
|
||||
STATX__RESERVED = 0x80000000
|
||||
S_BLKSIZE = 0x200
|
||||
S_IEXEC = 0x40
|
||||
S_IFBLK = 0x6000
|
||||
@@ -1711,6 +1761,8 @@ const (
|
||||
TCP_MAXWIN = 0xffff
|
||||
TCP_MAX_WINSHIFT = 0xe
|
||||
TCP_MD5SIG = 0xe
|
||||
TCP_MD5SIG_EXT = 0x20
|
||||
TCP_MD5SIG_FLAG_PREFIX = 0x1
|
||||
TCP_MD5SIG_MAXKEYLEN = 0x50
|
||||
TCP_MSS = 0x200
|
||||
TCP_MSS_DEFAULT = 0x218
|
||||
@@ -1731,6 +1783,7 @@ const (
|
||||
TCP_THIN_DUPACK = 0x11
|
||||
TCP_THIN_LINEAR_TIMEOUTS = 0x10
|
||||
TCP_TIMESTAMP = 0x18
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCSAFLUSH = 0x5410
|
||||
|
||||
55
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
generated
vendored
55
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
generated
vendored
@@ -121,6 +121,7 @@ const (
|
||||
ARPHRD_PPP = 0x200
|
||||
ARPHRD_PRONET = 0x4
|
||||
ARPHRD_RAWHDLC = 0x206
|
||||
ARPHRD_RAWIP = 0x207
|
||||
ARPHRD_ROSE = 0x10e
|
||||
ARPHRD_RSRVD = 0x104
|
||||
ARPHRD_SIT = 0x308
|
||||
@@ -390,6 +391,7 @@ const (
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
ETH_P_FCOE = 0x8906
|
||||
ETH_P_FIP = 0x8914
|
||||
ETH_P_HDLC = 0x19
|
||||
@@ -398,6 +400,7 @@ const (
|
||||
ETH_P_IEEE802154 = 0xf6
|
||||
ETH_P_IEEEPUP = 0xa00
|
||||
ETH_P_IEEEPUPAT = 0xa01
|
||||
ETH_P_IFE = 0xed3e
|
||||
ETH_P_IP = 0x800
|
||||
ETH_P_IPV6 = 0x86dd
|
||||
ETH_P_IPX = 0x8137
|
||||
@@ -408,11 +411,13 @@ const (
|
||||
ETH_P_LOOP = 0x60
|
||||
ETH_P_LOOPBACK = 0x9000
|
||||
ETH_P_MACSEC = 0x88e5
|
||||
ETH_P_MAP = 0xf9
|
||||
ETH_P_MOBITEX = 0x15
|
||||
ETH_P_MPLS_MC = 0x8848
|
||||
ETH_P_MPLS_UC = 0x8847
|
||||
ETH_P_MVRP = 0x88f5
|
||||
ETH_P_NCSI = 0x88f8
|
||||
ETH_P_NSH = 0x894f
|
||||
ETH_P_PAE = 0x888e
|
||||
ETH_P_PAUSE = 0x8808
|
||||
ETH_P_PHONET = 0xf5
|
||||
@@ -476,6 +481,7 @@ const (
|
||||
FS_POLICY_FLAGS_PAD_8 = 0x1
|
||||
FS_POLICY_FLAGS_PAD_MASK = 0x3
|
||||
FS_POLICY_FLAGS_VALID = 0x3
|
||||
F_ADD_SEALS = 0x409
|
||||
F_DUPFD = 0x0
|
||||
F_DUPFD_CLOEXEC = 0x406
|
||||
F_EXLCK = 0x4
|
||||
@@ -488,6 +494,9 @@ const (
|
||||
F_GETOWN_EX = 0x10
|
||||
F_GETPIPE_SZ = 0x408
|
||||
F_GETSIG = 0xb
|
||||
F_GET_FILE_RW_HINT = 0x40d
|
||||
F_GET_RW_HINT = 0x40b
|
||||
F_GET_SEALS = 0x40a
|
||||
F_LOCK = 0x1
|
||||
F_NOTIFY = 0x402
|
||||
F_OFD_GETLK = 0x24
|
||||
@@ -495,6 +504,10 @@ const (
|
||||
F_OFD_SETLKW = 0x26
|
||||
F_OK = 0x0
|
||||
F_RDLCK = 0x0
|
||||
F_SEAL_GROW = 0x4
|
||||
F_SEAL_SEAL = 0x1
|
||||
F_SEAL_SHRINK = 0x2
|
||||
F_SEAL_WRITE = 0x8
|
||||
F_SETFD = 0x2
|
||||
F_SETFL = 0x4
|
||||
F_SETLEASE = 0x400
|
||||
@@ -506,6 +519,8 @@ const (
|
||||
F_SETOWN_EX = 0xf
|
||||
F_SETPIPE_SZ = 0x407
|
||||
F_SETSIG = 0xa
|
||||
F_SET_FILE_RW_HINT = 0x40e
|
||||
F_SET_RW_HINT = 0x40c
|
||||
F_SHLCK = 0x8
|
||||
F_TEST = 0x3
|
||||
F_TLOCK = 0x2
|
||||
@@ -561,6 +576,8 @@ const (
|
||||
IFF_MASTER = 0x400
|
||||
IFF_MULTICAST = 0x1000
|
||||
IFF_MULTI_QUEUE = 0x100
|
||||
IFF_NAPI = 0x10
|
||||
IFF_NAPI_FRAGS = 0x20
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
@@ -845,6 +862,7 @@ const (
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
MADV_KEEPONFORK = 0x13
|
||||
MADV_MERGEABLE = 0xc
|
||||
MADV_NOHUGEPAGE = 0xf
|
||||
MADV_NORMAL = 0x0
|
||||
@@ -853,6 +871,7 @@ const (
|
||||
MADV_SEQUENTIAL = 0x2
|
||||
MADV_UNMERGEABLE = 0xd
|
||||
MADV_WILLNEED = 0x3
|
||||
MADV_WIPEONFORK = 0x12
|
||||
MAP_ANON = 0x800
|
||||
MAP_ANONYMOUS = 0x800
|
||||
MAP_DENYWRITE = 0x2000
|
||||
@@ -899,6 +918,7 @@ const (
|
||||
MSG_TRYHARD = 0x4
|
||||
MSG_WAITALL = 0x100
|
||||
MSG_WAITFORONE = 0x10000
|
||||
MSG_ZEROCOPY = 0x4000000
|
||||
MS_ACTIVE = 0x40000000
|
||||
MS_ASYNC = 0x1
|
||||
MS_BIND = 0x1000
|
||||
@@ -998,6 +1018,7 @@ const (
|
||||
NLM_F_EXCL = 0x200
|
||||
NLM_F_MATCH = 0x200
|
||||
NLM_F_MULTI = 0x2
|
||||
NLM_F_NONREC = 0x100
|
||||
NLM_F_REPLACE = 0x100
|
||||
NLM_F_REQUEST = 0x1
|
||||
NLM_F_ROOT = 0x100
|
||||
@@ -1196,6 +1217,11 @@ const (
|
||||
PR_SET_TIMING = 0xe
|
||||
PR_SET_TSC = 0x1a
|
||||
PR_SET_UNALIGN = 0x6
|
||||
PR_SVE_GET_VL = 0x33
|
||||
PR_SVE_SET_VL = 0x32
|
||||
PR_SVE_SET_VL_ONEXEC = 0x40000
|
||||
PR_SVE_VL_INHERIT = 0x20000
|
||||
PR_SVE_VL_LEN_MASK = 0xffff
|
||||
PR_TASK_PERF_EVENTS_DISABLE = 0x1f
|
||||
PR_TASK_PERF_EVENTS_ENABLE = 0x20
|
||||
PR_TIMING_STATISTICAL = 0x0
|
||||
@@ -1284,6 +1310,7 @@ const (
|
||||
RTAX_ADVMSS = 0x8
|
||||
RTAX_CC_ALGO = 0x10
|
||||
RTAX_CWND = 0x7
|
||||
RTAX_FASTOPEN_NO_COOKIE = 0x11
|
||||
RTAX_FEATURES = 0xc
|
||||
RTAX_FEATURE_ALLFRAG = 0x8
|
||||
RTAX_FEATURE_ECN = 0x1
|
||||
@@ -1294,7 +1321,7 @@ const (
|
||||
RTAX_INITCWND = 0xb
|
||||
RTAX_INITRWND = 0xe
|
||||
RTAX_LOCK = 0x1
|
||||
RTAX_MAX = 0x10
|
||||
RTAX_MAX = 0x11
|
||||
RTAX_MTU = 0x2
|
||||
RTAX_QUICKACK = 0xf
|
||||
RTAX_REORDERING = 0x9
|
||||
@@ -1568,6 +1595,7 @@ const (
|
||||
SOL_SOCKET = 0xffff
|
||||
SOL_TCP = 0x6
|
||||
SOL_TIPC = 0x10f
|
||||
SOL_TLS = 0x11a
|
||||
SOL_X25 = 0x106
|
||||
SOMAXCONN = 0x80
|
||||
SO_ACCEPTCONN = 0x1009
|
||||
@@ -1637,10 +1665,32 @@ const (
|
||||
SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
|
||||
SO_VM_SOCKETS_TRUSTED = 0x5
|
||||
SO_WIFI_STATUS = 0x29
|
||||
SO_ZEROCOPY = 0x3c
|
||||
SPLICE_F_GIFT = 0x8
|
||||
SPLICE_F_MORE = 0x4
|
||||
SPLICE_F_MOVE = 0x1
|
||||
SPLICE_F_NONBLOCK = 0x2
|
||||
STATX_ALL = 0xfff
|
||||
STATX_ATIME = 0x20
|
||||
STATX_ATTR_APPEND = 0x20
|
||||
STATX_ATTR_AUTOMOUNT = 0x1000
|
||||
STATX_ATTR_COMPRESSED = 0x4
|
||||
STATX_ATTR_ENCRYPTED = 0x800
|
||||
STATX_ATTR_IMMUTABLE = 0x10
|
||||
STATX_ATTR_NODUMP = 0x40
|
||||
STATX_BASIC_STATS = 0x7ff
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MODE = 0x2
|
||||
STATX_MTIME = 0x40
|
||||
STATX_NLINK = 0x4
|
||||
STATX_SIZE = 0x200
|
||||
STATX_TYPE = 0x1
|
||||
STATX_UID = 0x8
|
||||
STATX__RESERVED = 0x80000000
|
||||
S_BLKSIZE = 0x200
|
||||
S_IEXEC = 0x40
|
||||
S_IFBLK = 0x6000
|
||||
@@ -1711,6 +1761,8 @@ const (
|
||||
TCP_MAXWIN = 0xffff
|
||||
TCP_MAX_WINSHIFT = 0xe
|
||||
TCP_MD5SIG = 0xe
|
||||
TCP_MD5SIG_EXT = 0x20
|
||||
TCP_MD5SIG_FLAG_PREFIX = 0x1
|
||||
TCP_MD5SIG_MAXKEYLEN = 0x50
|
||||
TCP_MSS = 0x200
|
||||
TCP_MSS_DEFAULT = 0x218
|
||||
@@ -1731,6 +1783,7 @@ const (
|
||||
TCP_THIN_DUPACK = 0x11
|
||||
TCP_THIN_LINEAR_TIMEOUTS = 0x10
|
||||
TCP_TIMESTAMP = 0x18
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCSAFLUSH = 0x5410
|
||||
|
||||
55
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
generated
vendored
55
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
generated
vendored
@@ -121,6 +121,7 @@ const (
|
||||
ARPHRD_PPP = 0x200
|
||||
ARPHRD_PRONET = 0x4
|
||||
ARPHRD_RAWHDLC = 0x206
|
||||
ARPHRD_RAWIP = 0x207
|
||||
ARPHRD_ROSE = 0x10e
|
||||
ARPHRD_RSRVD = 0x104
|
||||
ARPHRD_SIT = 0x308
|
||||
@@ -390,6 +391,7 @@ const (
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
ETH_P_FCOE = 0x8906
|
||||
ETH_P_FIP = 0x8914
|
||||
ETH_P_HDLC = 0x19
|
||||
@@ -398,6 +400,7 @@ const (
|
||||
ETH_P_IEEE802154 = 0xf6
|
||||
ETH_P_IEEEPUP = 0xa00
|
||||
ETH_P_IEEEPUPAT = 0xa01
|
||||
ETH_P_IFE = 0xed3e
|
||||
ETH_P_IP = 0x800
|
||||
ETH_P_IPV6 = 0x86dd
|
||||
ETH_P_IPX = 0x8137
|
||||
@@ -408,11 +411,13 @@ const (
|
||||
ETH_P_LOOP = 0x60
|
||||
ETH_P_LOOPBACK = 0x9000
|
||||
ETH_P_MACSEC = 0x88e5
|
||||
ETH_P_MAP = 0xf9
|
||||
ETH_P_MOBITEX = 0x15
|
||||
ETH_P_MPLS_MC = 0x8848
|
||||
ETH_P_MPLS_UC = 0x8847
|
||||
ETH_P_MVRP = 0x88f5
|
||||
ETH_P_NCSI = 0x88f8
|
||||
ETH_P_NSH = 0x894f
|
||||
ETH_P_PAE = 0x888e
|
||||
ETH_P_PAUSE = 0x8808
|
||||
ETH_P_PHONET = 0xf5
|
||||
@@ -476,6 +481,7 @@ const (
|
||||
FS_POLICY_FLAGS_PAD_8 = 0x1
|
||||
FS_POLICY_FLAGS_PAD_MASK = 0x3
|
||||
FS_POLICY_FLAGS_VALID = 0x3
|
||||
F_ADD_SEALS = 0x409
|
||||
F_DUPFD = 0x0
|
||||
F_DUPFD_CLOEXEC = 0x406
|
||||
F_EXLCK = 0x4
|
||||
@@ -488,6 +494,9 @@ const (
|
||||
F_GETOWN_EX = 0x10
|
||||
F_GETPIPE_SZ = 0x408
|
||||
F_GETSIG = 0xb
|
||||
F_GET_FILE_RW_HINT = 0x40d
|
||||
F_GET_RW_HINT = 0x40b
|
||||
F_GET_SEALS = 0x40a
|
||||
F_LOCK = 0x1
|
||||
F_NOTIFY = 0x402
|
||||
F_OFD_GETLK = 0x24
|
||||
@@ -495,6 +504,10 @@ const (
|
||||
F_OFD_SETLKW = 0x26
|
||||
F_OK = 0x0
|
||||
F_RDLCK = 0x0
|
||||
F_SEAL_GROW = 0x4
|
||||
F_SEAL_SEAL = 0x1
|
||||
F_SEAL_SHRINK = 0x2
|
||||
F_SEAL_WRITE = 0x8
|
||||
F_SETFD = 0x2
|
||||
F_SETFL = 0x4
|
||||
F_SETLEASE = 0x400
|
||||
@@ -506,6 +519,8 @@ const (
|
||||
F_SETOWN_EX = 0xf
|
||||
F_SETPIPE_SZ = 0x407
|
||||
F_SETSIG = 0xa
|
||||
F_SET_FILE_RW_HINT = 0x40e
|
||||
F_SET_RW_HINT = 0x40c
|
||||
F_SHLCK = 0x8
|
||||
F_TEST = 0x3
|
||||
F_TLOCK = 0x2
|
||||
@@ -561,6 +576,8 @@ const (
|
||||
IFF_MASTER = 0x400
|
||||
IFF_MULTICAST = 0x1000
|
||||
IFF_MULTI_QUEUE = 0x100
|
||||
IFF_NAPI = 0x10
|
||||
IFF_NAPI_FRAGS = 0x20
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
@@ -845,6 +862,7 @@ const (
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
MADV_KEEPONFORK = 0x13
|
||||
MADV_MERGEABLE = 0xc
|
||||
MADV_NOHUGEPAGE = 0xf
|
||||
MADV_NORMAL = 0x0
|
||||
@@ -853,6 +871,7 @@ const (
|
||||
MADV_SEQUENTIAL = 0x2
|
||||
MADV_UNMERGEABLE = 0xd
|
||||
MADV_WILLNEED = 0x3
|
||||
MADV_WIPEONFORK = 0x12
|
||||
MAP_ANON = 0x800
|
||||
MAP_ANONYMOUS = 0x800
|
||||
MAP_DENYWRITE = 0x2000
|
||||
@@ -899,6 +918,7 @@ const (
|
||||
MSG_TRYHARD = 0x4
|
||||
MSG_WAITALL = 0x100
|
||||
MSG_WAITFORONE = 0x10000
|
||||
MSG_ZEROCOPY = 0x4000000
|
||||
MS_ACTIVE = 0x40000000
|
||||
MS_ASYNC = 0x1
|
||||
MS_BIND = 0x1000
|
||||
@@ -998,6 +1018,7 @@ const (
|
||||
NLM_F_EXCL = 0x200
|
||||
NLM_F_MATCH = 0x200
|
||||
NLM_F_MULTI = 0x2
|
||||
NLM_F_NONREC = 0x100
|
||||
NLM_F_REPLACE = 0x100
|
||||
NLM_F_REQUEST = 0x1
|
||||
NLM_F_ROOT = 0x100
|
||||
@@ -1196,6 +1217,11 @@ const (
|
||||
PR_SET_TIMING = 0xe
|
||||
PR_SET_TSC = 0x1a
|
||||
PR_SET_UNALIGN = 0x6
|
||||
PR_SVE_GET_VL = 0x33
|
||||
PR_SVE_SET_VL = 0x32
|
||||
PR_SVE_SET_VL_ONEXEC = 0x40000
|
||||
PR_SVE_VL_INHERIT = 0x20000
|
||||
PR_SVE_VL_LEN_MASK = 0xffff
|
||||
PR_TASK_PERF_EVENTS_DISABLE = 0x1f
|
||||
PR_TASK_PERF_EVENTS_ENABLE = 0x20
|
||||
PR_TIMING_STATISTICAL = 0x0
|
||||
@@ -1284,6 +1310,7 @@ const (
|
||||
RTAX_ADVMSS = 0x8
|
||||
RTAX_CC_ALGO = 0x10
|
||||
RTAX_CWND = 0x7
|
||||
RTAX_FASTOPEN_NO_COOKIE = 0x11
|
||||
RTAX_FEATURES = 0xc
|
||||
RTAX_FEATURE_ALLFRAG = 0x8
|
||||
RTAX_FEATURE_ECN = 0x1
|
||||
@@ -1294,7 +1321,7 @@ const (
|
||||
RTAX_INITCWND = 0xb
|
||||
RTAX_INITRWND = 0xe
|
||||
RTAX_LOCK = 0x1
|
||||
RTAX_MAX = 0x10
|
||||
RTAX_MAX = 0x11
|
||||
RTAX_MTU = 0x2
|
||||
RTAX_QUICKACK = 0xf
|
||||
RTAX_REORDERING = 0x9
|
||||
@@ -1568,6 +1595,7 @@ const (
|
||||
SOL_SOCKET = 0xffff
|
||||
SOL_TCP = 0x6
|
||||
SOL_TIPC = 0x10f
|
||||
SOL_TLS = 0x11a
|
||||
SOL_X25 = 0x106
|
||||
SOMAXCONN = 0x80
|
||||
SO_ACCEPTCONN = 0x1009
|
||||
@@ -1637,10 +1665,32 @@ const (
|
||||
SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
|
||||
SO_VM_SOCKETS_TRUSTED = 0x5
|
||||
SO_WIFI_STATUS = 0x29
|
||||
SO_ZEROCOPY = 0x3c
|
||||
SPLICE_F_GIFT = 0x8
|
||||
SPLICE_F_MORE = 0x4
|
||||
SPLICE_F_MOVE = 0x1
|
||||
SPLICE_F_NONBLOCK = 0x2
|
||||
STATX_ALL = 0xfff
|
||||
STATX_ATIME = 0x20
|
||||
STATX_ATTR_APPEND = 0x20
|
||||
STATX_ATTR_AUTOMOUNT = 0x1000
|
||||
STATX_ATTR_COMPRESSED = 0x4
|
||||
STATX_ATTR_ENCRYPTED = 0x800
|
||||
STATX_ATTR_IMMUTABLE = 0x10
|
||||
STATX_ATTR_NODUMP = 0x40
|
||||
STATX_BASIC_STATS = 0x7ff
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MODE = 0x2
|
||||
STATX_MTIME = 0x40
|
||||
STATX_NLINK = 0x4
|
||||
STATX_SIZE = 0x200
|
||||
STATX_TYPE = 0x1
|
||||
STATX_UID = 0x8
|
||||
STATX__RESERVED = 0x80000000
|
||||
S_BLKSIZE = 0x200
|
||||
S_IEXEC = 0x40
|
||||
S_IFBLK = 0x6000
|
||||
@@ -1711,6 +1761,8 @@ const (
|
||||
TCP_MAXWIN = 0xffff
|
||||
TCP_MAX_WINSHIFT = 0xe
|
||||
TCP_MD5SIG = 0xe
|
||||
TCP_MD5SIG_EXT = 0x20
|
||||
TCP_MD5SIG_FLAG_PREFIX = 0x1
|
||||
TCP_MD5SIG_MAXKEYLEN = 0x50
|
||||
TCP_MSS = 0x200
|
||||
TCP_MSS_DEFAULT = 0x218
|
||||
@@ -1731,6 +1783,7 @@ const (
|
||||
TCP_THIN_DUPACK = 0x11
|
||||
TCP_THIN_LINEAR_TIMEOUTS = 0x10
|
||||
TCP_TIMESTAMP = 0x18
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCSAFLUSH = 0x5410
|
||||
|
||||
55
vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
generated
vendored
55
vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
generated
vendored
@@ -121,6 +121,7 @@ const (
|
||||
ARPHRD_PPP = 0x200
|
||||
ARPHRD_PRONET = 0x4
|
||||
ARPHRD_RAWHDLC = 0x206
|
||||
ARPHRD_RAWIP = 0x207
|
||||
ARPHRD_ROSE = 0x10e
|
||||
ARPHRD_RSRVD = 0x104
|
||||
ARPHRD_SIT = 0x308
|
||||
@@ -390,6 +391,7 @@ const (
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
ETH_P_FCOE = 0x8906
|
||||
ETH_P_FIP = 0x8914
|
||||
ETH_P_HDLC = 0x19
|
||||
@@ -398,6 +400,7 @@ const (
|
||||
ETH_P_IEEE802154 = 0xf6
|
||||
ETH_P_IEEEPUP = 0xa00
|
||||
ETH_P_IEEEPUPAT = 0xa01
|
||||
ETH_P_IFE = 0xed3e
|
||||
ETH_P_IP = 0x800
|
||||
ETH_P_IPV6 = 0x86dd
|
||||
ETH_P_IPX = 0x8137
|
||||
@@ -408,11 +411,13 @@ const (
|
||||
ETH_P_LOOP = 0x60
|
||||
ETH_P_LOOPBACK = 0x9000
|
||||
ETH_P_MACSEC = 0x88e5
|
||||
ETH_P_MAP = 0xf9
|
||||
ETH_P_MOBITEX = 0x15
|
||||
ETH_P_MPLS_MC = 0x8848
|
||||
ETH_P_MPLS_UC = 0x8847
|
||||
ETH_P_MVRP = 0x88f5
|
||||
ETH_P_NCSI = 0x88f8
|
||||
ETH_P_NSH = 0x894f
|
||||
ETH_P_PAE = 0x888e
|
||||
ETH_P_PAUSE = 0x8808
|
||||
ETH_P_PHONET = 0xf5
|
||||
@@ -476,6 +481,7 @@ const (
|
||||
FS_POLICY_FLAGS_PAD_8 = 0x1
|
||||
FS_POLICY_FLAGS_PAD_MASK = 0x3
|
||||
FS_POLICY_FLAGS_VALID = 0x3
|
||||
F_ADD_SEALS = 0x409
|
||||
F_DUPFD = 0x0
|
||||
F_DUPFD_CLOEXEC = 0x406
|
||||
F_EXLCK = 0x4
|
||||
@@ -488,6 +494,9 @@ const (
|
||||
F_GETOWN_EX = 0x10
|
||||
F_GETPIPE_SZ = 0x408
|
||||
F_GETSIG = 0xb
|
||||
F_GET_FILE_RW_HINT = 0x40d
|
||||
F_GET_RW_HINT = 0x40b
|
||||
F_GET_SEALS = 0x40a
|
||||
F_LOCK = 0x1
|
||||
F_NOTIFY = 0x402
|
||||
F_OFD_GETLK = 0x24
|
||||
@@ -495,6 +504,10 @@ const (
|
||||
F_OFD_SETLKW = 0x26
|
||||
F_OK = 0x0
|
||||
F_RDLCK = 0x0
|
||||
F_SEAL_GROW = 0x4
|
||||
F_SEAL_SEAL = 0x1
|
||||
F_SEAL_SHRINK = 0x2
|
||||
F_SEAL_WRITE = 0x8
|
||||
F_SETFD = 0x2
|
||||
F_SETFL = 0x4
|
||||
F_SETLEASE = 0x400
|
||||
@@ -506,6 +519,8 @@ const (
|
||||
F_SETOWN_EX = 0xf
|
||||
F_SETPIPE_SZ = 0x407
|
||||
F_SETSIG = 0xa
|
||||
F_SET_FILE_RW_HINT = 0x40e
|
||||
F_SET_RW_HINT = 0x40c
|
||||
F_SHLCK = 0x8
|
||||
F_TEST = 0x3
|
||||
F_TLOCK = 0x2
|
||||
@@ -561,6 +576,8 @@ const (
|
||||
IFF_MASTER = 0x400
|
||||
IFF_MULTICAST = 0x1000
|
||||
IFF_MULTI_QUEUE = 0x100
|
||||
IFF_NAPI = 0x10
|
||||
IFF_NAPI_FRAGS = 0x20
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
@@ -845,6 +862,7 @@ const (
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
MADV_KEEPONFORK = 0x13
|
||||
MADV_MERGEABLE = 0xc
|
||||
MADV_NOHUGEPAGE = 0xf
|
||||
MADV_NORMAL = 0x0
|
||||
@@ -853,6 +871,7 @@ const (
|
||||
MADV_SEQUENTIAL = 0x2
|
||||
MADV_UNMERGEABLE = 0xd
|
||||
MADV_WILLNEED = 0x3
|
||||
MADV_WIPEONFORK = 0x12
|
||||
MAP_ANON = 0x800
|
||||
MAP_ANONYMOUS = 0x800
|
||||
MAP_DENYWRITE = 0x2000
|
||||
@@ -899,6 +918,7 @@ const (
|
||||
MSG_TRYHARD = 0x4
|
||||
MSG_WAITALL = 0x100
|
||||
MSG_WAITFORONE = 0x10000
|
||||
MSG_ZEROCOPY = 0x4000000
|
||||
MS_ACTIVE = 0x40000000
|
||||
MS_ASYNC = 0x1
|
||||
MS_BIND = 0x1000
|
||||
@@ -998,6 +1018,7 @@ const (
|
||||
NLM_F_EXCL = 0x200
|
||||
NLM_F_MATCH = 0x200
|
||||
NLM_F_MULTI = 0x2
|
||||
NLM_F_NONREC = 0x100
|
||||
NLM_F_REPLACE = 0x100
|
||||
NLM_F_REQUEST = 0x1
|
||||
NLM_F_ROOT = 0x100
|
||||
@@ -1196,6 +1217,11 @@ const (
|
||||
PR_SET_TIMING = 0xe
|
||||
PR_SET_TSC = 0x1a
|
||||
PR_SET_UNALIGN = 0x6
|
||||
PR_SVE_GET_VL = 0x33
|
||||
PR_SVE_SET_VL = 0x32
|
||||
PR_SVE_SET_VL_ONEXEC = 0x40000
|
||||
PR_SVE_VL_INHERIT = 0x20000
|
||||
PR_SVE_VL_LEN_MASK = 0xffff
|
||||
PR_TASK_PERF_EVENTS_DISABLE = 0x1f
|
||||
PR_TASK_PERF_EVENTS_ENABLE = 0x20
|
||||
PR_TIMING_STATISTICAL = 0x0
|
||||
@@ -1284,6 +1310,7 @@ const (
|
||||
RTAX_ADVMSS = 0x8
|
||||
RTAX_CC_ALGO = 0x10
|
||||
RTAX_CWND = 0x7
|
||||
RTAX_FASTOPEN_NO_COOKIE = 0x11
|
||||
RTAX_FEATURES = 0xc
|
||||
RTAX_FEATURE_ALLFRAG = 0x8
|
||||
RTAX_FEATURE_ECN = 0x1
|
||||
@@ -1294,7 +1321,7 @@ const (
|
||||
RTAX_INITCWND = 0xb
|
||||
RTAX_INITRWND = 0xe
|
||||
RTAX_LOCK = 0x1
|
||||
RTAX_MAX = 0x10
|
||||
RTAX_MAX = 0x11
|
||||
RTAX_MTU = 0x2
|
||||
RTAX_QUICKACK = 0xf
|
||||
RTAX_REORDERING = 0x9
|
||||
@@ -1568,6 +1595,7 @@ const (
|
||||
SOL_SOCKET = 0xffff
|
||||
SOL_TCP = 0x6
|
||||
SOL_TIPC = 0x10f
|
||||
SOL_TLS = 0x11a
|
||||
SOL_X25 = 0x106
|
||||
SOMAXCONN = 0x80
|
||||
SO_ACCEPTCONN = 0x1009
|
||||
@@ -1637,10 +1665,32 @@ const (
|
||||
SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
|
||||
SO_VM_SOCKETS_TRUSTED = 0x5
|
||||
SO_WIFI_STATUS = 0x29
|
||||
SO_ZEROCOPY = 0x3c
|
||||
SPLICE_F_GIFT = 0x8
|
||||
SPLICE_F_MORE = 0x4
|
||||
SPLICE_F_MOVE = 0x1
|
||||
SPLICE_F_NONBLOCK = 0x2
|
||||
STATX_ALL = 0xfff
|
||||
STATX_ATIME = 0x20
|
||||
STATX_ATTR_APPEND = 0x20
|
||||
STATX_ATTR_AUTOMOUNT = 0x1000
|
||||
STATX_ATTR_COMPRESSED = 0x4
|
||||
STATX_ATTR_ENCRYPTED = 0x800
|
||||
STATX_ATTR_IMMUTABLE = 0x10
|
||||
STATX_ATTR_NODUMP = 0x40
|
||||
STATX_BASIC_STATS = 0x7ff
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MODE = 0x2
|
||||
STATX_MTIME = 0x40
|
||||
STATX_NLINK = 0x4
|
||||
STATX_SIZE = 0x200
|
||||
STATX_TYPE = 0x1
|
||||
STATX_UID = 0x8
|
||||
STATX__RESERVED = 0x80000000
|
||||
S_BLKSIZE = 0x200
|
||||
S_IEXEC = 0x40
|
||||
S_IFBLK = 0x6000
|
||||
@@ -1711,6 +1761,8 @@ const (
|
||||
TCP_MAXWIN = 0xffff
|
||||
TCP_MAX_WINSHIFT = 0xe
|
||||
TCP_MD5SIG = 0xe
|
||||
TCP_MD5SIG_EXT = 0x20
|
||||
TCP_MD5SIG_FLAG_PREFIX = 0x1
|
||||
TCP_MD5SIG_MAXKEYLEN = 0x50
|
||||
TCP_MSS = 0x200
|
||||
TCP_MSS_DEFAULT = 0x218
|
||||
@@ -1731,6 +1783,7 @@ const (
|
||||
TCP_THIN_DUPACK = 0x11
|
||||
TCP_THIN_LINEAR_TIMEOUTS = 0x10
|
||||
TCP_TIMESTAMP = 0x18
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCSAFLUSH = 0x5410
|
||||
|
||||
55
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
generated
vendored
55
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
generated
vendored
@@ -121,6 +121,7 @@ const (
|
||||
ARPHRD_PPP = 0x200
|
||||
ARPHRD_PRONET = 0x4
|
||||
ARPHRD_RAWHDLC = 0x206
|
||||
ARPHRD_RAWIP = 0x207
|
||||
ARPHRD_ROSE = 0x10e
|
||||
ARPHRD_RSRVD = 0x104
|
||||
ARPHRD_SIT = 0x308
|
||||
@@ -390,6 +391,7 @@ const (
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
ETH_P_FCOE = 0x8906
|
||||
ETH_P_FIP = 0x8914
|
||||
ETH_P_HDLC = 0x19
|
||||
@@ -398,6 +400,7 @@ const (
|
||||
ETH_P_IEEE802154 = 0xf6
|
||||
ETH_P_IEEEPUP = 0xa00
|
||||
ETH_P_IEEEPUPAT = 0xa01
|
||||
ETH_P_IFE = 0xed3e
|
||||
ETH_P_IP = 0x800
|
||||
ETH_P_IPV6 = 0x86dd
|
||||
ETH_P_IPX = 0x8137
|
||||
@@ -408,11 +411,13 @@ const (
|
||||
ETH_P_LOOP = 0x60
|
||||
ETH_P_LOOPBACK = 0x9000
|
||||
ETH_P_MACSEC = 0x88e5
|
||||
ETH_P_MAP = 0xf9
|
||||
ETH_P_MOBITEX = 0x15
|
||||
ETH_P_MPLS_MC = 0x8848
|
||||
ETH_P_MPLS_UC = 0x8847
|
||||
ETH_P_MVRP = 0x88f5
|
||||
ETH_P_NCSI = 0x88f8
|
||||
ETH_P_NSH = 0x894f
|
||||
ETH_P_PAE = 0x888e
|
||||
ETH_P_PAUSE = 0x8808
|
||||
ETH_P_PHONET = 0xf5
|
||||
@@ -476,6 +481,7 @@ const (
|
||||
FS_POLICY_FLAGS_PAD_8 = 0x1
|
||||
FS_POLICY_FLAGS_PAD_MASK = 0x3
|
||||
FS_POLICY_FLAGS_VALID = 0x3
|
||||
F_ADD_SEALS = 0x409
|
||||
F_DUPFD = 0x0
|
||||
F_DUPFD_CLOEXEC = 0x406
|
||||
F_EXLCK = 0x4
|
||||
@@ -488,6 +494,9 @@ const (
|
||||
F_GETOWN_EX = 0x10
|
||||
F_GETPIPE_SZ = 0x408
|
||||
F_GETSIG = 0xb
|
||||
F_GET_FILE_RW_HINT = 0x40d
|
||||
F_GET_RW_HINT = 0x40b
|
||||
F_GET_SEALS = 0x40a
|
||||
F_LOCK = 0x1
|
||||
F_NOTIFY = 0x402
|
||||
F_OFD_GETLK = 0x24
|
||||
@@ -495,6 +504,10 @@ const (
|
||||
F_OFD_SETLKW = 0x26
|
||||
F_OK = 0x0
|
||||
F_RDLCK = 0x0
|
||||
F_SEAL_GROW = 0x4
|
||||
F_SEAL_SEAL = 0x1
|
||||
F_SEAL_SHRINK = 0x2
|
||||
F_SEAL_WRITE = 0x8
|
||||
F_SETFD = 0x2
|
||||
F_SETFL = 0x4
|
||||
F_SETLEASE = 0x400
|
||||
@@ -506,6 +519,8 @@ const (
|
||||
F_SETOWN_EX = 0xf
|
||||
F_SETPIPE_SZ = 0x407
|
||||
F_SETSIG = 0xa
|
||||
F_SET_FILE_RW_HINT = 0x40e
|
||||
F_SET_RW_HINT = 0x40c
|
||||
F_SHLCK = 0x8
|
||||
F_TEST = 0x3
|
||||
F_TLOCK = 0x2
|
||||
@@ -561,6 +576,8 @@ const (
|
||||
IFF_MASTER = 0x400
|
||||
IFF_MULTICAST = 0x1000
|
||||
IFF_MULTI_QUEUE = 0x100
|
||||
IFF_NAPI = 0x10
|
||||
IFF_NAPI_FRAGS = 0x20
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
@@ -845,6 +862,7 @@ const (
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
MADV_KEEPONFORK = 0x13
|
||||
MADV_MERGEABLE = 0xc
|
||||
MADV_NOHUGEPAGE = 0xf
|
||||
MADV_NORMAL = 0x0
|
||||
@@ -853,6 +871,7 @@ const (
|
||||
MADV_SEQUENTIAL = 0x2
|
||||
MADV_UNMERGEABLE = 0xd
|
||||
MADV_WILLNEED = 0x3
|
||||
MADV_WIPEONFORK = 0x12
|
||||
MAP_ANON = 0x20
|
||||
MAP_ANONYMOUS = 0x20
|
||||
MAP_DENYWRITE = 0x800
|
||||
@@ -898,6 +917,7 @@ const (
|
||||
MSG_TRYHARD = 0x4
|
||||
MSG_WAITALL = 0x100
|
||||
MSG_WAITFORONE = 0x10000
|
||||
MSG_ZEROCOPY = 0x4000000
|
||||
MS_ACTIVE = 0x40000000
|
||||
MS_ASYNC = 0x1
|
||||
MS_BIND = 0x1000
|
||||
@@ -999,6 +1019,7 @@ const (
|
||||
NLM_F_EXCL = 0x200
|
||||
NLM_F_MATCH = 0x200
|
||||
NLM_F_MULTI = 0x2
|
||||
NLM_F_NONREC = 0x100
|
||||
NLM_F_REPLACE = 0x100
|
||||
NLM_F_REQUEST = 0x1
|
||||
NLM_F_ROOT = 0x100
|
||||
@@ -1198,6 +1219,11 @@ const (
|
||||
PR_SET_TIMING = 0xe
|
||||
PR_SET_TSC = 0x1a
|
||||
PR_SET_UNALIGN = 0x6
|
||||
PR_SVE_GET_VL = 0x33
|
||||
PR_SVE_SET_VL = 0x32
|
||||
PR_SVE_SET_VL_ONEXEC = 0x40000
|
||||
PR_SVE_VL_INHERIT = 0x20000
|
||||
PR_SVE_VL_LEN_MASK = 0xffff
|
||||
PR_TASK_PERF_EVENTS_DISABLE = 0x1f
|
||||
PR_TASK_PERF_EVENTS_ENABLE = 0x20
|
||||
PR_TIMING_STATISTICAL = 0x0
|
||||
@@ -1340,6 +1366,7 @@ const (
|
||||
RTAX_ADVMSS = 0x8
|
||||
RTAX_CC_ALGO = 0x10
|
||||
RTAX_CWND = 0x7
|
||||
RTAX_FASTOPEN_NO_COOKIE = 0x11
|
||||
RTAX_FEATURES = 0xc
|
||||
RTAX_FEATURE_ALLFRAG = 0x8
|
||||
RTAX_FEATURE_ECN = 0x1
|
||||
@@ -1350,7 +1377,7 @@ const (
|
||||
RTAX_INITCWND = 0xb
|
||||
RTAX_INITRWND = 0xe
|
||||
RTAX_LOCK = 0x1
|
||||
RTAX_MAX = 0x10
|
||||
RTAX_MAX = 0x11
|
||||
RTAX_MTU = 0x2
|
||||
RTAX_QUICKACK = 0xf
|
||||
RTAX_REORDERING = 0x9
|
||||
@@ -1624,6 +1651,7 @@ const (
|
||||
SOL_SOCKET = 0x1
|
||||
SOL_TCP = 0x6
|
||||
SOL_TIPC = 0x10f
|
||||
SOL_TLS = 0x11a
|
||||
SOL_X25 = 0x106
|
||||
SOMAXCONN = 0x80
|
||||
SO_ACCEPTCONN = 0x1e
|
||||
@@ -1692,10 +1720,32 @@ const (
|
||||
SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
|
||||
SO_VM_SOCKETS_TRUSTED = 0x5
|
||||
SO_WIFI_STATUS = 0x29
|
||||
SO_ZEROCOPY = 0x3c
|
||||
SPLICE_F_GIFT = 0x8
|
||||
SPLICE_F_MORE = 0x4
|
||||
SPLICE_F_MOVE = 0x1
|
||||
SPLICE_F_NONBLOCK = 0x2
|
||||
STATX_ALL = 0xfff
|
||||
STATX_ATIME = 0x20
|
||||
STATX_ATTR_APPEND = 0x20
|
||||
STATX_ATTR_AUTOMOUNT = 0x1000
|
||||
STATX_ATTR_COMPRESSED = 0x4
|
||||
STATX_ATTR_ENCRYPTED = 0x800
|
||||
STATX_ATTR_IMMUTABLE = 0x10
|
||||
STATX_ATTR_NODUMP = 0x40
|
||||
STATX_BASIC_STATS = 0x7ff
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MODE = 0x2
|
||||
STATX_MTIME = 0x40
|
||||
STATX_NLINK = 0x4
|
||||
STATX_SIZE = 0x200
|
||||
STATX_TYPE = 0x1
|
||||
STATX_UID = 0x8
|
||||
STATX__RESERVED = 0x80000000
|
||||
S_BLKSIZE = 0x200
|
||||
S_IEXEC = 0x40
|
||||
S_IFBLK = 0x6000
|
||||
@@ -1765,6 +1815,8 @@ const (
|
||||
TCP_MAXWIN = 0xffff
|
||||
TCP_MAX_WINSHIFT = 0xe
|
||||
TCP_MD5SIG = 0xe
|
||||
TCP_MD5SIG_EXT = 0x20
|
||||
TCP_MD5SIG_FLAG_PREFIX = 0x1
|
||||
TCP_MD5SIG_MAXKEYLEN = 0x50
|
||||
TCP_MSS = 0x200
|
||||
TCP_MSS_DEFAULT = 0x218
|
||||
@@ -1785,6 +1837,7 @@ const (
|
||||
TCP_THIN_DUPACK = 0x11
|
||||
TCP_THIN_LINEAR_TIMEOUTS = 0x10
|
||||
TCP_TIMESTAMP = 0x18
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCSAFLUSH = 0x2
|
||||
|
||||
55
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
generated
vendored
55
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
generated
vendored
@@ -121,6 +121,7 @@ const (
|
||||
ARPHRD_PPP = 0x200
|
||||
ARPHRD_PRONET = 0x4
|
||||
ARPHRD_RAWHDLC = 0x206
|
||||
ARPHRD_RAWIP = 0x207
|
||||
ARPHRD_ROSE = 0x10e
|
||||
ARPHRD_RSRVD = 0x104
|
||||
ARPHRD_SIT = 0x308
|
||||
@@ -390,6 +391,7 @@ const (
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
ETH_P_FCOE = 0x8906
|
||||
ETH_P_FIP = 0x8914
|
||||
ETH_P_HDLC = 0x19
|
||||
@@ -398,6 +400,7 @@ const (
|
||||
ETH_P_IEEE802154 = 0xf6
|
||||
ETH_P_IEEEPUP = 0xa00
|
||||
ETH_P_IEEEPUPAT = 0xa01
|
||||
ETH_P_IFE = 0xed3e
|
||||
ETH_P_IP = 0x800
|
||||
ETH_P_IPV6 = 0x86dd
|
||||
ETH_P_IPX = 0x8137
|
||||
@@ -408,11 +411,13 @@ const (
|
||||
ETH_P_LOOP = 0x60
|
||||
ETH_P_LOOPBACK = 0x9000
|
||||
ETH_P_MACSEC = 0x88e5
|
||||
ETH_P_MAP = 0xf9
|
||||
ETH_P_MOBITEX = 0x15
|
||||
ETH_P_MPLS_MC = 0x8848
|
||||
ETH_P_MPLS_UC = 0x8847
|
||||
ETH_P_MVRP = 0x88f5
|
||||
ETH_P_NCSI = 0x88f8
|
||||
ETH_P_NSH = 0x894f
|
||||
ETH_P_PAE = 0x888e
|
||||
ETH_P_PAUSE = 0x8808
|
||||
ETH_P_PHONET = 0xf5
|
||||
@@ -476,6 +481,7 @@ const (
|
||||
FS_POLICY_FLAGS_PAD_8 = 0x1
|
||||
FS_POLICY_FLAGS_PAD_MASK = 0x3
|
||||
FS_POLICY_FLAGS_VALID = 0x3
|
||||
F_ADD_SEALS = 0x409
|
||||
F_DUPFD = 0x0
|
||||
F_DUPFD_CLOEXEC = 0x406
|
||||
F_EXLCK = 0x4
|
||||
@@ -488,6 +494,9 @@ const (
|
||||
F_GETOWN_EX = 0x10
|
||||
F_GETPIPE_SZ = 0x408
|
||||
F_GETSIG = 0xb
|
||||
F_GET_FILE_RW_HINT = 0x40d
|
||||
F_GET_RW_HINT = 0x40b
|
||||
F_GET_SEALS = 0x40a
|
||||
F_LOCK = 0x1
|
||||
F_NOTIFY = 0x402
|
||||
F_OFD_GETLK = 0x24
|
||||
@@ -495,6 +504,10 @@ const (
|
||||
F_OFD_SETLKW = 0x26
|
||||
F_OK = 0x0
|
||||
F_RDLCK = 0x0
|
||||
F_SEAL_GROW = 0x4
|
||||
F_SEAL_SEAL = 0x1
|
||||
F_SEAL_SHRINK = 0x2
|
||||
F_SEAL_WRITE = 0x8
|
||||
F_SETFD = 0x2
|
||||
F_SETFL = 0x4
|
||||
F_SETLEASE = 0x400
|
||||
@@ -506,6 +519,8 @@ const (
|
||||
F_SETOWN_EX = 0xf
|
||||
F_SETPIPE_SZ = 0x407
|
||||
F_SETSIG = 0xa
|
||||
F_SET_FILE_RW_HINT = 0x40e
|
||||
F_SET_RW_HINT = 0x40c
|
||||
F_SHLCK = 0x8
|
||||
F_TEST = 0x3
|
||||
F_TLOCK = 0x2
|
||||
@@ -561,6 +576,8 @@ const (
|
||||
IFF_MASTER = 0x400
|
||||
IFF_MULTICAST = 0x1000
|
||||
IFF_MULTI_QUEUE = 0x100
|
||||
IFF_NAPI = 0x10
|
||||
IFF_NAPI_FRAGS = 0x20
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
@@ -845,6 +862,7 @@ const (
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
MADV_KEEPONFORK = 0x13
|
||||
MADV_MERGEABLE = 0xc
|
||||
MADV_NOHUGEPAGE = 0xf
|
||||
MADV_NORMAL = 0x0
|
||||
@@ -853,6 +871,7 @@ const (
|
||||
MADV_SEQUENTIAL = 0x2
|
||||
MADV_UNMERGEABLE = 0xd
|
||||
MADV_WILLNEED = 0x3
|
||||
MADV_WIPEONFORK = 0x12
|
||||
MAP_ANON = 0x20
|
||||
MAP_ANONYMOUS = 0x20
|
||||
MAP_DENYWRITE = 0x800
|
||||
@@ -898,6 +917,7 @@ const (
|
||||
MSG_TRYHARD = 0x4
|
||||
MSG_WAITALL = 0x100
|
||||
MSG_WAITFORONE = 0x10000
|
||||
MSG_ZEROCOPY = 0x4000000
|
||||
MS_ACTIVE = 0x40000000
|
||||
MS_ASYNC = 0x1
|
||||
MS_BIND = 0x1000
|
||||
@@ -999,6 +1019,7 @@ const (
|
||||
NLM_F_EXCL = 0x200
|
||||
NLM_F_MATCH = 0x200
|
||||
NLM_F_MULTI = 0x2
|
||||
NLM_F_NONREC = 0x100
|
||||
NLM_F_REPLACE = 0x100
|
||||
NLM_F_REQUEST = 0x1
|
||||
NLM_F_ROOT = 0x100
|
||||
@@ -1198,6 +1219,11 @@ const (
|
||||
PR_SET_TIMING = 0xe
|
||||
PR_SET_TSC = 0x1a
|
||||
PR_SET_UNALIGN = 0x6
|
||||
PR_SVE_GET_VL = 0x33
|
||||
PR_SVE_SET_VL = 0x32
|
||||
PR_SVE_SET_VL_ONEXEC = 0x40000
|
||||
PR_SVE_VL_INHERIT = 0x20000
|
||||
PR_SVE_VL_LEN_MASK = 0xffff
|
||||
PR_TASK_PERF_EVENTS_DISABLE = 0x1f
|
||||
PR_TASK_PERF_EVENTS_ENABLE = 0x20
|
||||
PR_TIMING_STATISTICAL = 0x0
|
||||
@@ -1340,6 +1366,7 @@ const (
|
||||
RTAX_ADVMSS = 0x8
|
||||
RTAX_CC_ALGO = 0x10
|
||||
RTAX_CWND = 0x7
|
||||
RTAX_FASTOPEN_NO_COOKIE = 0x11
|
||||
RTAX_FEATURES = 0xc
|
||||
RTAX_FEATURE_ALLFRAG = 0x8
|
||||
RTAX_FEATURE_ECN = 0x1
|
||||
@@ -1350,7 +1377,7 @@ const (
|
||||
RTAX_INITCWND = 0xb
|
||||
RTAX_INITRWND = 0xe
|
||||
RTAX_LOCK = 0x1
|
||||
RTAX_MAX = 0x10
|
||||
RTAX_MAX = 0x11
|
||||
RTAX_MTU = 0x2
|
||||
RTAX_QUICKACK = 0xf
|
||||
RTAX_REORDERING = 0x9
|
||||
@@ -1624,6 +1651,7 @@ const (
|
||||
SOL_SOCKET = 0x1
|
||||
SOL_TCP = 0x6
|
||||
SOL_TIPC = 0x10f
|
||||
SOL_TLS = 0x11a
|
||||
SOL_X25 = 0x106
|
||||
SOMAXCONN = 0x80
|
||||
SO_ACCEPTCONN = 0x1e
|
||||
@@ -1692,10 +1720,32 @@ const (
|
||||
SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
|
||||
SO_VM_SOCKETS_TRUSTED = 0x5
|
||||
SO_WIFI_STATUS = 0x29
|
||||
SO_ZEROCOPY = 0x3c
|
||||
SPLICE_F_GIFT = 0x8
|
||||
SPLICE_F_MORE = 0x4
|
||||
SPLICE_F_MOVE = 0x1
|
||||
SPLICE_F_NONBLOCK = 0x2
|
||||
STATX_ALL = 0xfff
|
||||
STATX_ATIME = 0x20
|
||||
STATX_ATTR_APPEND = 0x20
|
||||
STATX_ATTR_AUTOMOUNT = 0x1000
|
||||
STATX_ATTR_COMPRESSED = 0x4
|
||||
STATX_ATTR_ENCRYPTED = 0x800
|
||||
STATX_ATTR_IMMUTABLE = 0x10
|
||||
STATX_ATTR_NODUMP = 0x40
|
||||
STATX_BASIC_STATS = 0x7ff
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MODE = 0x2
|
||||
STATX_MTIME = 0x40
|
||||
STATX_NLINK = 0x4
|
||||
STATX_SIZE = 0x200
|
||||
STATX_TYPE = 0x1
|
||||
STATX_UID = 0x8
|
||||
STATX__RESERVED = 0x80000000
|
||||
S_BLKSIZE = 0x200
|
||||
S_IEXEC = 0x40
|
||||
S_IFBLK = 0x6000
|
||||
@@ -1765,6 +1815,8 @@ const (
|
||||
TCP_MAXWIN = 0xffff
|
||||
TCP_MAX_WINSHIFT = 0xe
|
||||
TCP_MD5SIG = 0xe
|
||||
TCP_MD5SIG_EXT = 0x20
|
||||
TCP_MD5SIG_FLAG_PREFIX = 0x1
|
||||
TCP_MD5SIG_MAXKEYLEN = 0x50
|
||||
TCP_MSS = 0x200
|
||||
TCP_MSS_DEFAULT = 0x218
|
||||
@@ -1785,6 +1837,7 @@ const (
|
||||
TCP_THIN_DUPACK = 0x11
|
||||
TCP_THIN_LINEAR_TIMEOUTS = 0x10
|
||||
TCP_TIMESTAMP = 0x18
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCSAFLUSH = 0x2
|
||||
|
||||
55
vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
generated
vendored
55
vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
generated
vendored
@@ -121,6 +121,7 @@ const (
|
||||
ARPHRD_PPP = 0x200
|
||||
ARPHRD_PRONET = 0x4
|
||||
ARPHRD_RAWHDLC = 0x206
|
||||
ARPHRD_RAWIP = 0x207
|
||||
ARPHRD_ROSE = 0x10e
|
||||
ARPHRD_RSRVD = 0x104
|
||||
ARPHRD_SIT = 0x308
|
||||
@@ -390,6 +391,7 @@ const (
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
ETH_P_FCOE = 0x8906
|
||||
ETH_P_FIP = 0x8914
|
||||
ETH_P_HDLC = 0x19
|
||||
@@ -398,6 +400,7 @@ const (
|
||||
ETH_P_IEEE802154 = 0xf6
|
||||
ETH_P_IEEEPUP = 0xa00
|
||||
ETH_P_IEEEPUPAT = 0xa01
|
||||
ETH_P_IFE = 0xed3e
|
||||
ETH_P_IP = 0x800
|
||||
ETH_P_IPV6 = 0x86dd
|
||||
ETH_P_IPX = 0x8137
|
||||
@@ -408,11 +411,13 @@ const (
|
||||
ETH_P_LOOP = 0x60
|
||||
ETH_P_LOOPBACK = 0x9000
|
||||
ETH_P_MACSEC = 0x88e5
|
||||
ETH_P_MAP = 0xf9
|
||||
ETH_P_MOBITEX = 0x15
|
||||
ETH_P_MPLS_MC = 0x8848
|
||||
ETH_P_MPLS_UC = 0x8847
|
||||
ETH_P_MVRP = 0x88f5
|
||||
ETH_P_NCSI = 0x88f8
|
||||
ETH_P_NSH = 0x894f
|
||||
ETH_P_PAE = 0x888e
|
||||
ETH_P_PAUSE = 0x8808
|
||||
ETH_P_PHONET = 0xf5
|
||||
@@ -476,6 +481,7 @@ const (
|
||||
FS_POLICY_FLAGS_PAD_8 = 0x1
|
||||
FS_POLICY_FLAGS_PAD_MASK = 0x3
|
||||
FS_POLICY_FLAGS_VALID = 0x3
|
||||
F_ADD_SEALS = 0x409
|
||||
F_DUPFD = 0x0
|
||||
F_DUPFD_CLOEXEC = 0x406
|
||||
F_EXLCK = 0x4
|
||||
@@ -488,6 +494,9 @@ const (
|
||||
F_GETOWN_EX = 0x10
|
||||
F_GETPIPE_SZ = 0x408
|
||||
F_GETSIG = 0xb
|
||||
F_GET_FILE_RW_HINT = 0x40d
|
||||
F_GET_RW_HINT = 0x40b
|
||||
F_GET_SEALS = 0x40a
|
||||
F_LOCK = 0x1
|
||||
F_NOTIFY = 0x402
|
||||
F_OFD_GETLK = 0x24
|
||||
@@ -495,6 +504,10 @@ const (
|
||||
F_OFD_SETLKW = 0x26
|
||||
F_OK = 0x0
|
||||
F_RDLCK = 0x0
|
||||
F_SEAL_GROW = 0x4
|
||||
F_SEAL_SEAL = 0x1
|
||||
F_SEAL_SHRINK = 0x2
|
||||
F_SEAL_WRITE = 0x8
|
||||
F_SETFD = 0x2
|
||||
F_SETFL = 0x4
|
||||
F_SETLEASE = 0x400
|
||||
@@ -506,6 +519,8 @@ const (
|
||||
F_SETOWN_EX = 0xf
|
||||
F_SETPIPE_SZ = 0x407
|
||||
F_SETSIG = 0xa
|
||||
F_SET_FILE_RW_HINT = 0x40e
|
||||
F_SET_RW_HINT = 0x40c
|
||||
F_SHLCK = 0x8
|
||||
F_TEST = 0x3
|
||||
F_TLOCK = 0x2
|
||||
@@ -561,6 +576,8 @@ const (
|
||||
IFF_MASTER = 0x400
|
||||
IFF_MULTICAST = 0x1000
|
||||
IFF_MULTI_QUEUE = 0x100
|
||||
IFF_NAPI = 0x10
|
||||
IFF_NAPI_FRAGS = 0x20
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
@@ -845,6 +862,7 @@ const (
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
MADV_KEEPONFORK = 0x13
|
||||
MADV_MERGEABLE = 0xc
|
||||
MADV_NOHUGEPAGE = 0xf
|
||||
MADV_NORMAL = 0x0
|
||||
@@ -853,6 +871,7 @@ const (
|
||||
MADV_SEQUENTIAL = 0x2
|
||||
MADV_UNMERGEABLE = 0xd
|
||||
MADV_WILLNEED = 0x3
|
||||
MADV_WIPEONFORK = 0x12
|
||||
MAP_ANON = 0x20
|
||||
MAP_ANONYMOUS = 0x20
|
||||
MAP_DENYWRITE = 0x800
|
||||
@@ -898,6 +917,7 @@ const (
|
||||
MSG_TRYHARD = 0x4
|
||||
MSG_WAITALL = 0x100
|
||||
MSG_WAITFORONE = 0x10000
|
||||
MSG_ZEROCOPY = 0x4000000
|
||||
MS_ACTIVE = 0x40000000
|
||||
MS_ASYNC = 0x1
|
||||
MS_BIND = 0x1000
|
||||
@@ -997,6 +1017,7 @@ const (
|
||||
NLM_F_EXCL = 0x200
|
||||
NLM_F_MATCH = 0x200
|
||||
NLM_F_MULTI = 0x2
|
||||
NLM_F_NONREC = 0x100
|
||||
NLM_F_REPLACE = 0x100
|
||||
NLM_F_REQUEST = 0x1
|
||||
NLM_F_ROOT = 0x100
|
||||
@@ -1195,6 +1216,11 @@ const (
|
||||
PR_SET_TIMING = 0xe
|
||||
PR_SET_TSC = 0x1a
|
||||
PR_SET_UNALIGN = 0x6
|
||||
PR_SVE_GET_VL = 0x33
|
||||
PR_SVE_SET_VL = 0x32
|
||||
PR_SVE_SET_VL_ONEXEC = 0x40000
|
||||
PR_SVE_VL_INHERIT = 0x20000
|
||||
PR_SVE_VL_LEN_MASK = 0xffff
|
||||
PR_TASK_PERF_EVENTS_DISABLE = 0x1f
|
||||
PR_TASK_PERF_EVENTS_ENABLE = 0x20
|
||||
PR_TIMING_STATISTICAL = 0x0
|
||||
@@ -1344,6 +1370,7 @@ const (
|
||||
RTAX_ADVMSS = 0x8
|
||||
RTAX_CC_ALGO = 0x10
|
||||
RTAX_CWND = 0x7
|
||||
RTAX_FASTOPEN_NO_COOKIE = 0x11
|
||||
RTAX_FEATURES = 0xc
|
||||
RTAX_FEATURE_ALLFRAG = 0x8
|
||||
RTAX_FEATURE_ECN = 0x1
|
||||
@@ -1354,7 +1381,7 @@ const (
|
||||
RTAX_INITCWND = 0xb
|
||||
RTAX_INITRWND = 0xe
|
||||
RTAX_LOCK = 0x1
|
||||
RTAX_MAX = 0x10
|
||||
RTAX_MAX = 0x11
|
||||
RTAX_MTU = 0x2
|
||||
RTAX_QUICKACK = 0xf
|
||||
RTAX_REORDERING = 0x9
|
||||
@@ -1628,6 +1655,7 @@ const (
|
||||
SOL_SOCKET = 0x1
|
||||
SOL_TCP = 0x6
|
||||
SOL_TIPC = 0x10f
|
||||
SOL_TLS = 0x11a
|
||||
SOL_X25 = 0x106
|
||||
SOMAXCONN = 0x80
|
||||
SO_ACCEPTCONN = 0x1e
|
||||
@@ -1696,10 +1724,32 @@ const (
|
||||
SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
|
||||
SO_VM_SOCKETS_TRUSTED = 0x5
|
||||
SO_WIFI_STATUS = 0x29
|
||||
SO_ZEROCOPY = 0x3c
|
||||
SPLICE_F_GIFT = 0x8
|
||||
SPLICE_F_MORE = 0x4
|
||||
SPLICE_F_MOVE = 0x1
|
||||
SPLICE_F_NONBLOCK = 0x2
|
||||
STATX_ALL = 0xfff
|
||||
STATX_ATIME = 0x20
|
||||
STATX_ATTR_APPEND = 0x20
|
||||
STATX_ATTR_AUTOMOUNT = 0x1000
|
||||
STATX_ATTR_COMPRESSED = 0x4
|
||||
STATX_ATTR_ENCRYPTED = 0x800
|
||||
STATX_ATTR_IMMUTABLE = 0x10
|
||||
STATX_ATTR_NODUMP = 0x40
|
||||
STATX_BASIC_STATS = 0x7ff
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MODE = 0x2
|
||||
STATX_MTIME = 0x40
|
||||
STATX_NLINK = 0x4
|
||||
STATX_SIZE = 0x200
|
||||
STATX_TYPE = 0x1
|
||||
STATX_UID = 0x8
|
||||
STATX__RESERVED = 0x80000000
|
||||
S_BLKSIZE = 0x200
|
||||
S_IEXEC = 0x40
|
||||
S_IFBLK = 0x6000
|
||||
@@ -1771,6 +1821,8 @@ const (
|
||||
TCP_MAXWIN = 0xffff
|
||||
TCP_MAX_WINSHIFT = 0xe
|
||||
TCP_MD5SIG = 0xe
|
||||
TCP_MD5SIG_EXT = 0x20
|
||||
TCP_MD5SIG_FLAG_PREFIX = 0x1
|
||||
TCP_MD5SIG_MAXKEYLEN = 0x50
|
||||
TCP_MSS = 0x200
|
||||
TCP_MSS_DEFAULT = 0x218
|
||||
@@ -1791,6 +1843,7 @@ const (
|
||||
TCP_THIN_DUPACK = 0x11
|
||||
TCP_THIN_LINEAR_TIMEOUTS = 0x10
|
||||
TCP_TIMESTAMP = 0x18
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCSAFLUSH = 0x2
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
generated
vendored
35
vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
generated
vendored
@@ -538,7 +538,7 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Exit(code int) {
|
||||
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ func Getpgid(pid int) (pgid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getpid() (pid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
|
||||
pid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func Getpid() (pid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getppid() (ppid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
|
||||
ppid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -739,7 +739,7 @@ func Getsid(pid int) (sid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Gettid() (tid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
|
||||
tid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1238,8 +1238,23 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
|
||||
var _p0 *byte
|
||||
_p0, err = BytePtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Sync() {
|
||||
Syscall(SYS_SYNC, 0, 0, 0)
|
||||
SyscallNoError(SYS_SYNC, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1298,7 +1313,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Umask(mask int) (oldmask int) {
|
||||
r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
oldmask = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1595,7 +1610,7 @@ func Ftruncate(fd int, length int64) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getegid() (egid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEGID32, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)
|
||||
egid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1603,7 +1618,7 @@ func Getegid() (egid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Geteuid() (euid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEUID32, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)
|
||||
euid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1611,7 +1626,7 @@ func Geteuid() (euid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getgid() (gid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETGID32, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)
|
||||
gid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1619,7 +1634,7 @@ func Getgid() (gid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getuid() (uid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETUID32, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)
|
||||
uid = int(r0)
|
||||
return
|
||||
}
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
generated
vendored
35
vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
generated
vendored
@@ -538,7 +538,7 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Exit(code int) {
|
||||
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ func Getpgid(pid int) (pgid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getpid() (pid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
|
||||
pid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func Getpid() (pid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getppid() (ppid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
|
||||
ppid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -739,7 +739,7 @@ func Getsid(pid int) (sid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Gettid() (tid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
|
||||
tid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1238,8 +1238,23 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
|
||||
var _p0 *byte
|
||||
_p0, err = BytePtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Sync() {
|
||||
Syscall(SYS_SYNC, 0, 0, 0)
|
||||
SyscallNoError(SYS_SYNC, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1298,7 +1313,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Umask(mask int) (oldmask int) {
|
||||
r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
oldmask = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1602,7 +1617,7 @@ func Ftruncate(fd int, length int64) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getegid() (egid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
|
||||
egid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1610,7 +1625,7 @@ func Getegid() (egid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Geteuid() (euid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
|
||||
euid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1618,7 +1633,7 @@ func Geteuid() (euid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getgid() (gid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
|
||||
gid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1636,7 +1651,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getuid() (uid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
|
||||
uid = int(r0)
|
||||
return
|
||||
}
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
generated
vendored
35
vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
generated
vendored
@@ -538,7 +538,7 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Exit(code int) {
|
||||
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ func Getpgid(pid int) (pgid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getpid() (pid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
|
||||
pid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func Getpid() (pid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getppid() (ppid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
|
||||
ppid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -739,7 +739,7 @@ func Getsid(pid int) (sid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Gettid() (tid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
|
||||
tid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1238,8 +1238,23 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
|
||||
var _p0 *byte
|
||||
_p0, err = BytePtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Sync() {
|
||||
Syscall(SYS_SYNC, 0, 0, 0)
|
||||
SyscallNoError(SYS_SYNC, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1298,7 +1313,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Umask(mask int) (oldmask int) {
|
||||
r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
oldmask = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1744,7 +1759,7 @@ func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getegid() (egid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEGID32, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)
|
||||
egid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1752,7 +1767,7 @@ func Getegid() (egid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Geteuid() (euid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEUID32, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)
|
||||
euid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1760,7 +1775,7 @@ func Geteuid() (euid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getgid() (gid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETGID32, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)
|
||||
gid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1768,7 +1783,7 @@ func Getgid() (gid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getuid() (uid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETUID32, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)
|
||||
uid = int(r0)
|
||||
return
|
||||
}
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
generated
vendored
35
vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
generated
vendored
@@ -538,7 +538,7 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Exit(code int) {
|
||||
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ func Getpgid(pid int) (pgid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getpid() (pid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
|
||||
pid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func Getpid() (pid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getppid() (ppid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
|
||||
ppid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -739,7 +739,7 @@ func Getsid(pid int) (sid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Gettid() (tid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
|
||||
tid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1238,8 +1238,23 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
|
||||
var _p0 *byte
|
||||
_p0, err = BytePtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Sync() {
|
||||
Syscall(SYS_SYNC, 0, 0, 0)
|
||||
SyscallNoError(SYS_SYNC, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1298,7 +1313,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Umask(mask int) (oldmask int) {
|
||||
r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
oldmask = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1582,7 +1597,7 @@ func Ftruncate(fd int, length int64) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getegid() (egid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
|
||||
egid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1590,7 +1605,7 @@ func Getegid() (egid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Geteuid() (euid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
|
||||
euid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1598,7 +1613,7 @@ func Geteuid() (euid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getgid() (gid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
|
||||
gid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1616,7 +1631,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getuid() (uid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
|
||||
uid = int(r0)
|
||||
return
|
||||
}
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
generated
vendored
35
vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
generated
vendored
@@ -538,7 +538,7 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Exit(code int) {
|
||||
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ func Getpgid(pid int) (pgid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getpid() (pid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
|
||||
pid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func Getpid() (pid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getppid() (ppid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
|
||||
ppid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -739,7 +739,7 @@ func Getsid(pid int) (sid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Gettid() (tid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
|
||||
tid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1238,8 +1238,23 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
|
||||
var _p0 *byte
|
||||
_p0, err = BytePtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Sync() {
|
||||
Syscall(SYS_SYNC, 0, 0, 0)
|
||||
SyscallNoError(SYS_SYNC, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1298,7 +1313,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Umask(mask int) (oldmask int) {
|
||||
r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
oldmask = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1540,7 +1555,7 @@ func Ftruncate(fd int, length int64) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getegid() (egid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
|
||||
egid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1548,7 +1563,7 @@ func Getegid() (egid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Geteuid() (euid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
|
||||
euid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1556,7 +1571,7 @@ func Geteuid() (euid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getgid() (gid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
|
||||
gid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1564,7 +1579,7 @@ func Getgid() (gid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getuid() (uid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
|
||||
uid = int(r0)
|
||||
return
|
||||
}
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
generated
vendored
35
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
generated
vendored
@@ -538,7 +538,7 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Exit(code int) {
|
||||
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ func Getpgid(pid int) (pgid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getpid() (pid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
|
||||
pid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func Getpid() (pid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getppid() (ppid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
|
||||
ppid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -739,7 +739,7 @@ func Getsid(pid int) (sid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Gettid() (tid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
|
||||
tid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1238,8 +1238,23 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
|
||||
var _p0 *byte
|
||||
_p0, err = BytePtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Sync() {
|
||||
Syscall(SYS_SYNC, 0, 0, 0)
|
||||
SyscallNoError(SYS_SYNC, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1298,7 +1313,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Umask(mask int) (oldmask int) {
|
||||
r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
oldmask = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1582,7 +1597,7 @@ func Ftruncate(fd int, length int64) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getegid() (egid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
|
||||
egid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1590,7 +1605,7 @@ func Getegid() (egid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Geteuid() (euid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
|
||||
euid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1598,7 +1613,7 @@ func Geteuid() (euid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getgid() (gid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
|
||||
gid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1616,7 +1631,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getuid() (uid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
|
||||
uid = int(r0)
|
||||
return
|
||||
}
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
generated
vendored
35
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
generated
vendored
@@ -538,7 +538,7 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Exit(code int) {
|
||||
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ func Getpgid(pid int) (pgid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getpid() (pid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
|
||||
pid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func Getpid() (pid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getppid() (ppid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
|
||||
ppid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -739,7 +739,7 @@ func Getsid(pid int) (sid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Gettid() (tid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
|
||||
tid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1238,8 +1238,23 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
|
||||
var _p0 *byte
|
||||
_p0, err = BytePtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Sync() {
|
||||
Syscall(SYS_SYNC, 0, 0, 0)
|
||||
SyscallNoError(SYS_SYNC, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1298,7 +1313,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Umask(mask int) (oldmask int) {
|
||||
r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
oldmask = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1582,7 +1597,7 @@ func Ftruncate(fd int, length int64) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getegid() (egid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
|
||||
egid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1590,7 +1605,7 @@ func Getegid() (egid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Geteuid() (euid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
|
||||
euid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1598,7 +1613,7 @@ func Geteuid() (euid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getgid() (gid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
|
||||
gid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1616,7 +1631,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getuid() (uid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
|
||||
uid = int(r0)
|
||||
return
|
||||
}
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
generated
vendored
35
vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
generated
vendored
@@ -538,7 +538,7 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Exit(code int) {
|
||||
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ func Getpgid(pid int) (pgid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getpid() (pid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
|
||||
pid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func Getpid() (pid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getppid() (ppid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
|
||||
ppid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -739,7 +739,7 @@ func Getsid(pid int) (sid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Gettid() (tid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
|
||||
tid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1238,8 +1238,23 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
|
||||
var _p0 *byte
|
||||
_p0, err = BytePtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Sync() {
|
||||
Syscall(SYS_SYNC, 0, 0, 0)
|
||||
SyscallNoError(SYS_SYNC, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1298,7 +1313,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Umask(mask int) (oldmask int) {
|
||||
r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
oldmask = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1540,7 +1555,7 @@ func Ftruncate(fd int, length int64) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getegid() (egid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
|
||||
egid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1548,7 +1563,7 @@ func Getegid() (egid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Geteuid() (euid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
|
||||
euid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1556,7 +1571,7 @@ func Geteuid() (euid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getgid() (gid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
|
||||
gid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1564,7 +1579,7 @@ func Getgid() (gid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getuid() (uid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
|
||||
uid = int(r0)
|
||||
return
|
||||
}
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
generated
vendored
35
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
generated
vendored
@@ -538,7 +538,7 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Exit(code int) {
|
||||
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ func Getpgid(pid int) (pgid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getpid() (pid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
|
||||
pid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func Getpid() (pid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getppid() (ppid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
|
||||
ppid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -739,7 +739,7 @@ func Getsid(pid int) (sid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Gettid() (tid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
|
||||
tid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1238,8 +1238,23 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
|
||||
var _p0 *byte
|
||||
_p0, err = BytePtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Sync() {
|
||||
Syscall(SYS_SYNC, 0, 0, 0)
|
||||
SyscallNoError(SYS_SYNC, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1298,7 +1313,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Umask(mask int) (oldmask int) {
|
||||
r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
oldmask = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1592,7 +1607,7 @@ func Ftruncate(fd int, length int64) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getegid() (egid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
|
||||
egid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1600,7 +1615,7 @@ func Getegid() (egid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Geteuid() (euid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
|
||||
euid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1608,7 +1623,7 @@ func Geteuid() (euid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getgid() (gid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
|
||||
gid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1626,7 +1641,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getuid() (uid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
|
||||
uid = int(r0)
|
||||
return
|
||||
}
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
generated
vendored
35
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
generated
vendored
@@ -538,7 +538,7 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Exit(code int) {
|
||||
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ func Getpgid(pid int) (pgid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getpid() (pid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
|
||||
pid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func Getpid() (pid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getppid() (ppid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
|
||||
ppid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -739,7 +739,7 @@ func Getsid(pid int) (sid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Gettid() (tid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
|
||||
tid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1238,8 +1238,23 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
|
||||
var _p0 *byte
|
||||
_p0, err = BytePtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Sync() {
|
||||
Syscall(SYS_SYNC, 0, 0, 0)
|
||||
SyscallNoError(SYS_SYNC, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1298,7 +1313,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Umask(mask int) (oldmask int) {
|
||||
r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
oldmask = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1592,7 +1607,7 @@ func Ftruncate(fd int, length int64) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getegid() (egid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
|
||||
egid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1600,7 +1615,7 @@ func Getegid() (egid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Geteuid() (euid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
|
||||
euid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1608,7 +1623,7 @@ func Geteuid() (euid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getgid() (gid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
|
||||
gid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1626,7 +1641,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getuid() (uid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
|
||||
uid = int(r0)
|
||||
return
|
||||
}
|
||||
|
||||
35
vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
generated
vendored
35
vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
generated
vendored
@@ -538,7 +538,7 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Exit(code int) {
|
||||
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ func Getpgid(pid int) (pgid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getpid() (pid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
|
||||
pid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func Getpid() (pid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getppid() (ppid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
|
||||
ppid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -739,7 +739,7 @@ func Getsid(pid int) (sid int, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Gettid() (tid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
|
||||
tid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1238,8 +1238,23 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
|
||||
var _p0 *byte
|
||||
_p0, err = BytePtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Sync() {
|
||||
Syscall(SYS_SYNC, 0, 0, 0)
|
||||
SyscallNoError(SYS_SYNC, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1298,7 +1313,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Umask(mask int) (oldmask int) {
|
||||
r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
|
||||
oldmask = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1602,7 +1617,7 @@ func Ftruncate(fd int, length int64) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getegid() (egid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
|
||||
egid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1610,7 +1625,7 @@ func Getegid() (egid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Geteuid() (euid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
|
||||
euid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1618,7 +1633,7 @@ func Geteuid() (euid int) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getgid() (gid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
|
||||
gid = int(r0)
|
||||
return
|
||||
}
|
||||
@@ -1636,7 +1651,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func Getuid() (uid int) {
|
||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||
r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
|
||||
uid = int(r0)
|
||||
return
|
||||
}
|
||||
|
||||
11
vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go
generated
vendored
11
vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go
generated
vendored
@@ -95,6 +95,7 @@ import (
|
||||
//go:cgo_import_dynamic libc_renameat renameat "libc.so"
|
||||
//go:cgo_import_dynamic libc_rmdir rmdir "libc.so"
|
||||
//go:cgo_import_dynamic libc_lseek lseek "libc.so"
|
||||
//go:cgo_import_dynamic libc_select select "libc.so"
|
||||
//go:cgo_import_dynamic libc_setegid setegid "libc.so"
|
||||
//go:cgo_import_dynamic libc_seteuid seteuid "libc.so"
|
||||
//go:cgo_import_dynamic libc_setgid setgid "libc.so"
|
||||
@@ -220,6 +221,7 @@ import (
|
||||
//go:linkname procRenameat libc_renameat
|
||||
//go:linkname procRmdir libc_rmdir
|
||||
//go:linkname proclseek libc_lseek
|
||||
//go:linkname procSelect libc_select
|
||||
//go:linkname procSetegid libc_setegid
|
||||
//go:linkname procSeteuid libc_seteuid
|
||||
//go:linkname procSetgid libc_setgid
|
||||
@@ -346,6 +348,7 @@ var (
|
||||
procRenameat,
|
||||
procRmdir,
|
||||
proclseek,
|
||||
procSelect,
|
||||
procSetegid,
|
||||
procSeteuid,
|
||||
procSetgid,
|
||||
@@ -1264,6 +1267,14 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
|
||||
_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
|
||||
if e1 != 0 {
|
||||
err = e1
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func Setegid(egid int) (err error) {
|
||||
_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0)
|
||||
if e1 != 0 {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user