mirror of
https://github.com/golang/sys.git
synced 2026-02-08 19:56:04 +03:00
Merge branch 'master' into find_cert
This commit is contained in:
102
execabs/execabs.go
Normal file
102
execabs/execabs.go
Normal file
@@ -0,0 +1,102 @@
|
||||
// Copyright 2020 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Package execabs is a drop-in replacement for os/exec
|
||||
// that requires PATH lookups to find absolute paths.
|
||||
// That is, execabs.Command("cmd") runs the same PATH lookup
|
||||
// as exec.Command("cmd"), but if the result is a path
|
||||
// which is relative, the Run and Start methods will report
|
||||
// an error instead of running the executable.
|
||||
//
|
||||
// See https://blog.golang.org/path-security for more information
|
||||
// about when it may be necessary or appropriate to use this package.
|
||||
package execabs
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// ErrNotFound is the error resulting if a path search failed to find an executable file.
|
||||
// It is an alias for exec.ErrNotFound.
|
||||
var ErrNotFound = exec.ErrNotFound
|
||||
|
||||
// Cmd represents an external command being prepared or run.
|
||||
// It is an alias for exec.Cmd.
|
||||
type Cmd = exec.Cmd
|
||||
|
||||
// Error is returned by LookPath when it fails to classify a file as an executable.
|
||||
// It is an alias for exec.Error.
|
||||
type Error = exec.Error
|
||||
|
||||
// An ExitError reports an unsuccessful exit by a command.
|
||||
// It is an alias for exec.ExitError.
|
||||
type ExitError = exec.ExitError
|
||||
|
||||
func relError(file, path string) error {
|
||||
return fmt.Errorf("%s resolves to executable in current directory (.%c%s)", file, filepath.Separator, path)
|
||||
}
|
||||
|
||||
// LookPath searches for an executable named file in the directories
|
||||
// named by the PATH environment variable. If file contains a slash,
|
||||
// it is tried directly and the PATH is not consulted. The result will be
|
||||
// an absolute path.
|
||||
//
|
||||
// LookPath differs from exec.LookPath in its handling of PATH lookups,
|
||||
// which are used for file names without slashes. If exec.LookPath's
|
||||
// PATH lookup would have returned an executable from the current directory,
|
||||
// LookPath instead returns an error.
|
||||
func LookPath(file string) (string, error) {
|
||||
path, err := exec.LookPath(file)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if filepath.Base(file) == file && !filepath.IsAbs(path) {
|
||||
return "", relError(file, path)
|
||||
}
|
||||
return path, nil
|
||||
}
|
||||
|
||||
func fixCmd(name string, cmd *exec.Cmd) {
|
||||
if filepath.Base(name) == name && !filepath.IsAbs(cmd.Path) {
|
||||
// exec.Command was called with a bare binary name and
|
||||
// exec.LookPath returned a path which is not absolute.
|
||||
// Set cmd.lookPathErr and clear cmd.Path so that it
|
||||
// cannot be run.
|
||||
lookPathErr := (*error)(unsafe.Pointer(reflect.ValueOf(cmd).Elem().FieldByName("lookPathErr").Addr().Pointer()))
|
||||
if *lookPathErr == nil {
|
||||
*lookPathErr = relError(name, cmd.Path)
|
||||
}
|
||||
cmd.Path = ""
|
||||
}
|
||||
}
|
||||
|
||||
// CommandContext is like Command but includes a context.
|
||||
//
|
||||
// The provided context is used to kill the process (by calling os.Process.Kill)
|
||||
// if the context becomes done before the command completes on its own.
|
||||
func CommandContext(ctx context.Context, name string, arg ...string) *exec.Cmd {
|
||||
cmd := exec.CommandContext(ctx, name, arg...)
|
||||
fixCmd(name, cmd)
|
||||
return cmd
|
||||
|
||||
}
|
||||
|
||||
// Command returns the Cmd struct to execute the named program with the given arguments.
|
||||
// See exec.Command for most details.
|
||||
//
|
||||
// Command differs from exec.Command in its handling of PATH lookups,
|
||||
// which are used when the program name contains no slashes.
|
||||
// If exec.Command would have returned an exec.Cmd configured to run an
|
||||
// executable from the current directory, Command instead
|
||||
// returns an exec.Cmd that will return an error from Start or Run.
|
||||
func Command(name string, arg ...string) *exec.Cmd {
|
||||
cmd := exec.Command(name, arg...)
|
||||
fixCmd(name, cmd)
|
||||
return cmd
|
||||
}
|
||||
132
execabs/execabs_test.go
Normal file
132
execabs/execabs_test.go
Normal file
@@ -0,0 +1,132 @@
|
||||
// Copyright 2020 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package execabs
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// hasExec reports whether the current system can start new processes
|
||||
// using os.StartProcess or (more commonly) exec.Command.
|
||||
// Copied from internal/testenv.HasExec
|
||||
func hasExec() bool {
|
||||
switch runtime.GOOS {
|
||||
case "js", "ios":
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// mustHaveExec checks that the current system can start new processes
|
||||
// using os.StartProcess or (more commonly) exec.Command.
|
||||
// If not, mustHaveExec calls t.Skip with an explanation.
|
||||
// Copied from internal/testenv.MustHaveExec
|
||||
func mustHaveExec(t testing.TB) {
|
||||
if !hasExec() {
|
||||
t.Skipf("skipping test: cannot exec subprocess on %s/%s", runtime.GOOS, runtime.GOARCH)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFixCmd(t *testing.T) {
|
||||
cmd := &exec.Cmd{Path: "hello"}
|
||||
fixCmd("hello", cmd)
|
||||
if cmd.Path != "" {
|
||||
t.Errorf("fixCmd didn't clear cmd.Path")
|
||||
}
|
||||
expectedErr := fmt.Sprintf("hello resolves to executable in current directory (.%chello)", filepath.Separator)
|
||||
if err := cmd.Run(); err == nil {
|
||||
t.Fatal("Command.Run didn't fail")
|
||||
} else if err.Error() != expectedErr {
|
||||
t.Fatalf("Command.Run returned unexpected error: want %q, got %q", expectedErr, err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func TestCommand(t *testing.T) {
|
||||
mustHaveExec(t)
|
||||
|
||||
for _, cmd := range []func(string) *Cmd{
|
||||
func(s string) *Cmd { return Command(s) },
|
||||
func(s string) *Cmd { return CommandContext(context.Background(), s) },
|
||||
} {
|
||||
tmpDir, err := ioutil.TempDir("", "execabs-test")
|
||||
if err != nil {
|
||||
t.Fatalf("ioutil.TempDir failed: %s", err)
|
||||
}
|
||||
defer os.RemoveAll(tmpDir)
|
||||
executable := "execabs-test"
|
||||
if runtime.GOOS == "windows" {
|
||||
executable += ".exe"
|
||||
}
|
||||
if err = ioutil.WriteFile(filepath.Join(tmpDir, executable), []byte{1, 2, 3}, 0111); err != nil {
|
||||
t.Fatalf("ioutil.WriteFile failed: %s", err)
|
||||
}
|
||||
cwd, err := os.Getwd()
|
||||
if err != nil {
|
||||
t.Fatalf("os.Getwd failed: %s", err)
|
||||
}
|
||||
defer os.Chdir(cwd)
|
||||
if err = os.Chdir(tmpDir); err != nil {
|
||||
t.Fatalf("os.Chdir failed: %s", err)
|
||||
}
|
||||
if runtime.GOOS != "windows" {
|
||||
// add "." to PATH so that exec.LookPath looks in the current directory on
|
||||
// non-windows platforms as well
|
||||
origPath := os.Getenv("PATH")
|
||||
defer os.Setenv("PATH", origPath)
|
||||
os.Setenv("PATH", fmt.Sprintf(".:%s", origPath))
|
||||
}
|
||||
expectedErr := fmt.Sprintf("execabs-test resolves to executable in current directory (.%c%s)", filepath.Separator, executable)
|
||||
if err = cmd("execabs-test").Run(); err == nil {
|
||||
t.Fatalf("Command.Run didn't fail when exec.LookPath returned a relative path")
|
||||
} else if err.Error() != expectedErr {
|
||||
t.Errorf("Command.Run returned unexpected error: want %q, got %q", expectedErr, err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestLookPath(t *testing.T) {
|
||||
mustHaveExec(t)
|
||||
|
||||
tmpDir, err := ioutil.TempDir("", "execabs-test")
|
||||
if err != nil {
|
||||
t.Fatalf("ioutil.TempDir failed: %s", err)
|
||||
}
|
||||
defer os.RemoveAll(tmpDir)
|
||||
executable := "execabs-test"
|
||||
if runtime.GOOS == "windows" {
|
||||
executable += ".exe"
|
||||
}
|
||||
if err = ioutil.WriteFile(filepath.Join(tmpDir, executable), []byte{1, 2, 3}, 0111); err != nil {
|
||||
t.Fatalf("ioutil.WriteFile failed: %s", err)
|
||||
}
|
||||
cwd, err := os.Getwd()
|
||||
if err != nil {
|
||||
t.Fatalf("os.Getwd failed: %s", err)
|
||||
}
|
||||
defer os.Chdir(cwd)
|
||||
if err = os.Chdir(tmpDir); err != nil {
|
||||
t.Fatalf("os.Chdir failed: %s", err)
|
||||
}
|
||||
if runtime.GOOS != "windows" {
|
||||
// add "." to PATH so that exec.LookPath looks in the current directory on
|
||||
// non-windows platforms as well
|
||||
origPath := os.Getenv("PATH")
|
||||
defer os.Setenv("PATH", origPath)
|
||||
os.Setenv("PATH", fmt.Sprintf(".:%s", origPath))
|
||||
}
|
||||
expectedErr := fmt.Sprintf("execabs-test resolves to executable in current directory (.%c%s)", filepath.Separator, executable)
|
||||
if _, err := LookPath("execabs-test"); err == nil {
|
||||
t.Fatalf("LookPath didn't fail when finding a non-relative path")
|
||||
} else if err.Error() != expectedErr {
|
||||
t.Errorf("LookPath returned unexpected error: want %q, got %q", expectedErr, err.Error())
|
||||
}
|
||||
}
|
||||
@@ -88,6 +88,8 @@ struct termios2 {
|
||||
#include <linux/devlink.h>
|
||||
#include <linux/dm-ioctl.h>
|
||||
#include <linux/errqueue.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/ethtool_netlink.h>
|
||||
#include <linux/fanotify.h>
|
||||
#include <linux/filter.h>
|
||||
#include <linux/fs.h>
|
||||
@@ -3166,3 +3168,468 @@ const (
|
||||
MPLS_IPTUNNEL_TTL = C.MPLS_IPTUNNEL_TTL
|
||||
MPLS_IPTUNNEL_MAX = C.MPLS_IPTUNNEL_MAX
|
||||
)
|
||||
|
||||
// ethtool and its netlink interface, generated using:
|
||||
//
|
||||
// perl -nlE '/^\s*(ETHTOOL_\w+)/ && say "$1 = C.$1"' ethtool.h
|
||||
// perl -nlE '/^\s*(ETHTOOL_\w+)/ && say "$1 = C.$1"' ethtool_netlink.h
|
||||
//
|
||||
// Note that a couple of constants produced by this command will be duplicated
|
||||
// by mkerrors.sh, so some manual pruning was necessary.
|
||||
const (
|
||||
ETHTOOL_ID_UNSPEC = C.ETHTOOL_ID_UNSPEC
|
||||
ETHTOOL_RX_COPYBREAK = C.ETHTOOL_RX_COPYBREAK
|
||||
ETHTOOL_TX_COPYBREAK = C.ETHTOOL_TX_COPYBREAK
|
||||
ETHTOOL_PFC_PREVENTION_TOUT = C.ETHTOOL_PFC_PREVENTION_TOUT
|
||||
ETHTOOL_TUNABLE_UNSPEC = C.ETHTOOL_TUNABLE_UNSPEC
|
||||
ETHTOOL_TUNABLE_U8 = C.ETHTOOL_TUNABLE_U8
|
||||
ETHTOOL_TUNABLE_U16 = C.ETHTOOL_TUNABLE_U16
|
||||
ETHTOOL_TUNABLE_U32 = C.ETHTOOL_TUNABLE_U32
|
||||
ETHTOOL_TUNABLE_U64 = C.ETHTOOL_TUNABLE_U64
|
||||
ETHTOOL_TUNABLE_STRING = C.ETHTOOL_TUNABLE_STRING
|
||||
ETHTOOL_TUNABLE_S8 = C.ETHTOOL_TUNABLE_S8
|
||||
ETHTOOL_TUNABLE_S16 = C.ETHTOOL_TUNABLE_S16
|
||||
ETHTOOL_TUNABLE_S32 = C.ETHTOOL_TUNABLE_S32
|
||||
ETHTOOL_TUNABLE_S64 = C.ETHTOOL_TUNABLE_S64
|
||||
ETHTOOL_PHY_ID_UNSPEC = C.ETHTOOL_PHY_ID_UNSPEC
|
||||
ETHTOOL_PHY_DOWNSHIFT = C.ETHTOOL_PHY_DOWNSHIFT
|
||||
ETHTOOL_PHY_FAST_LINK_DOWN = C.ETHTOOL_PHY_FAST_LINK_DOWN
|
||||
ETHTOOL_PHY_EDPD = C.ETHTOOL_PHY_EDPD
|
||||
ETHTOOL_LINK_EXT_STATE_AUTONEG = C.ETHTOOL_LINK_EXT_STATE_AUTONEG
|
||||
ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE = C.ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE
|
||||
ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH = C.ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH
|
||||
ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY = C.ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY
|
||||
ETHTOOL_LINK_EXT_STATE_NO_CABLE = C.ETHTOOL_LINK_EXT_STATE_NO_CABLE
|
||||
ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE = C.ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE
|
||||
ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE = C.ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE
|
||||
ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE = C.ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE
|
||||
ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED = C.ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED
|
||||
ETHTOOL_LINK_EXT_STATE_OVERHEAT = C.ETHTOOL_LINK_EXT_STATE_OVERHEAT
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED = C.ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT = C.ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = C.ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT = C.ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK = C.ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK = C.ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS = C.ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED = C.ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED = C.ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS = C.ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE = C.ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = C.ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = C.ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE
|
||||
ETHTOOL_FLASH_ALL_REGIONS = C.ETHTOOL_FLASH_ALL_REGIONS
|
||||
ETHTOOL_F_UNSUPPORTED__BIT = C.ETHTOOL_F_UNSUPPORTED__BIT
|
||||
ETHTOOL_F_WISH__BIT = C.ETHTOOL_F_WISH__BIT
|
||||
ETHTOOL_F_COMPAT__BIT = C.ETHTOOL_F_COMPAT__BIT
|
||||
ETHTOOL_FEC_NONE_BIT = C.ETHTOOL_FEC_NONE_BIT
|
||||
ETHTOOL_FEC_AUTO_BIT = C.ETHTOOL_FEC_AUTO_BIT
|
||||
ETHTOOL_FEC_OFF_BIT = C.ETHTOOL_FEC_OFF_BIT
|
||||
ETHTOOL_FEC_RS_BIT = C.ETHTOOL_FEC_RS_BIT
|
||||
ETHTOOL_FEC_BASER_BIT = C.ETHTOOL_FEC_BASER_BIT
|
||||
ETHTOOL_FEC_LLRS_BIT = C.ETHTOOL_FEC_LLRS_BIT
|
||||
ETHTOOL_LINK_MODE_10baseT_Half_BIT = C.ETHTOOL_LINK_MODE_10baseT_Half_BIT
|
||||
ETHTOOL_LINK_MODE_10baseT_Full_BIT = C.ETHTOOL_LINK_MODE_10baseT_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100baseT_Half_BIT = C.ETHTOOL_LINK_MODE_100baseT_Half_BIT
|
||||
ETHTOOL_LINK_MODE_100baseT_Full_BIT = C.ETHTOOL_LINK_MODE_100baseT_Full_BIT
|
||||
ETHTOOL_LINK_MODE_1000baseT_Half_BIT = C.ETHTOOL_LINK_MODE_1000baseT_Half_BIT
|
||||
ETHTOOL_LINK_MODE_1000baseT_Full_BIT = C.ETHTOOL_LINK_MODE_1000baseT_Full_BIT
|
||||
ETHTOOL_LINK_MODE_Autoneg_BIT = C.ETHTOOL_LINK_MODE_Autoneg_BIT
|
||||
ETHTOOL_LINK_MODE_TP_BIT = C.ETHTOOL_LINK_MODE_TP_BIT
|
||||
ETHTOOL_LINK_MODE_AUI_BIT = C.ETHTOOL_LINK_MODE_AUI_BIT
|
||||
ETHTOOL_LINK_MODE_MII_BIT = C.ETHTOOL_LINK_MODE_MII_BIT
|
||||
ETHTOOL_LINK_MODE_FIBRE_BIT = C.ETHTOOL_LINK_MODE_FIBRE_BIT
|
||||
ETHTOOL_LINK_MODE_BNC_BIT = C.ETHTOOL_LINK_MODE_BNC_BIT
|
||||
ETHTOOL_LINK_MODE_10000baseT_Full_BIT = C.ETHTOOL_LINK_MODE_10000baseT_Full_BIT
|
||||
ETHTOOL_LINK_MODE_Pause_BIT = C.ETHTOOL_LINK_MODE_Pause_BIT
|
||||
ETHTOOL_LINK_MODE_Asym_Pause_BIT = C.ETHTOOL_LINK_MODE_Asym_Pause_BIT
|
||||
ETHTOOL_LINK_MODE_2500baseX_Full_BIT = C.ETHTOOL_LINK_MODE_2500baseX_Full_BIT
|
||||
ETHTOOL_LINK_MODE_Backplane_BIT = C.ETHTOOL_LINK_MODE_Backplane_BIT
|
||||
ETHTOOL_LINK_MODE_1000baseKX_Full_BIT = C.ETHTOOL_LINK_MODE_1000baseKX_Full_BIT
|
||||
ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT = C.ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_10000baseKR_Full_BIT = C.ETHTOOL_LINK_MODE_10000baseKR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_10000baseR_FEC_BIT = C.ETHTOOL_LINK_MODE_10000baseR_FEC_BIT
|
||||
ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT = C.ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT = C.ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT = C.ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT = C.ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT = C.ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT = C.ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT = C.ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT = C.ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT = C.ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT = C.ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_25000baseCR_Full_BIT = C.ETHTOOL_LINK_MODE_25000baseCR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_25000baseKR_Full_BIT = C.ETHTOOL_LINK_MODE_25000baseKR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_25000baseSR_Full_BIT = C.ETHTOOL_LINK_MODE_25000baseSR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT = C.ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT = C.ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = C.ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_1000baseX_Full_BIT = C.ETHTOOL_LINK_MODE_1000baseX_Full_BIT
|
||||
ETHTOOL_LINK_MODE_10000baseCR_Full_BIT = C.ETHTOOL_LINK_MODE_10000baseCR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_10000baseSR_Full_BIT = C.ETHTOOL_LINK_MODE_10000baseSR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = C.ETHTOOL_LINK_MODE_10000baseLR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = C.ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT
|
||||
ETHTOOL_LINK_MODE_10000baseER_Full_BIT = C.ETHTOOL_LINK_MODE_10000baseER_Full_BIT
|
||||
ETHTOOL_LINK_MODE_2500baseT_Full_BIT = C.ETHTOOL_LINK_MODE_2500baseT_Full_BIT
|
||||
ETHTOOL_LINK_MODE_5000baseT_Full_BIT = C.ETHTOOL_LINK_MODE_5000baseT_Full_BIT
|
||||
ETHTOOL_LINK_MODE_FEC_NONE_BIT = C.ETHTOOL_LINK_MODE_FEC_NONE_BIT
|
||||
ETHTOOL_LINK_MODE_FEC_RS_BIT = C.ETHTOOL_LINK_MODE_FEC_RS_BIT
|
||||
ETHTOOL_LINK_MODE_FEC_BASER_BIT = C.ETHTOOL_LINK_MODE_FEC_BASER_BIT
|
||||
ETHTOOL_LINK_MODE_50000baseKR_Full_BIT = C.ETHTOOL_LINK_MODE_50000baseKR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_50000baseSR_Full_BIT = C.ETHTOOL_LINK_MODE_50000baseSR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_50000baseCR_Full_BIT = C.ETHTOOL_LINK_MODE_50000baseCR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT = C.ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_50000baseDR_Full_BIT = C.ETHTOOL_LINK_MODE_50000baseDR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT = C.ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT = C.ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = C.ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT = C.ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = C.ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100baseT1_Full_BIT = C.ETHTOOL_LINK_MODE_100baseT1_Full_BIT
|
||||
ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = C.ETHTOOL_LINK_MODE_1000baseT1_Full_BIT
|
||||
ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT = C.ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT
|
||||
ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT = C.ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT
|
||||
ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT = C.ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT
|
||||
ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT = C.ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT
|
||||
ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT = C.ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT
|
||||
ETHTOOL_LINK_MODE_FEC_LLRS_BIT = C.ETHTOOL_LINK_MODE_FEC_LLRS_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseKR_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseKR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseSR_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseSR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseCR_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseCR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100000baseDR_Full_BIT = C.ETHTOOL_LINK_MODE_100000baseDR_Full_BIT
|
||||
ETHTOOL_LINK_MODE_200000baseKR2_Full_BIT = C.ETHTOOL_LINK_MODE_200000baseKR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_200000baseSR2_Full_BIT = C.ETHTOOL_LINK_MODE_200000baseSR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT = C.ETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_200000baseDR2_Full_BIT = C.ETHTOOL_LINK_MODE_200000baseDR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_200000baseCR2_Full_BIT = C.ETHTOOL_LINK_MODE_200000baseCR2_Full_BIT
|
||||
ETHTOOL_LINK_MODE_400000baseKR4_Full_BIT = C.ETHTOOL_LINK_MODE_400000baseKR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_400000baseSR4_Full_BIT = C.ETHTOOL_LINK_MODE_400000baseSR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT = C.ETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_400000baseDR4_Full_BIT = C.ETHTOOL_LINK_MODE_400000baseDR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = C.ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT
|
||||
ETHTOOL_LINK_MODE_100baseFX_Half_BIT = C.ETHTOOL_LINK_MODE_100baseFX_Half_BIT
|
||||
ETHTOOL_LINK_MODE_100baseFX_Full_BIT = C.ETHTOOL_LINK_MODE_100baseFX_Full_BIT
|
||||
|
||||
ETHTOOL_MSG_USER_NONE = C.ETHTOOL_MSG_USER_NONE
|
||||
ETHTOOL_MSG_STRSET_GET = C.ETHTOOL_MSG_STRSET_GET
|
||||
ETHTOOL_MSG_LINKINFO_GET = C.ETHTOOL_MSG_LINKINFO_GET
|
||||
ETHTOOL_MSG_LINKINFO_SET = C.ETHTOOL_MSG_LINKINFO_SET
|
||||
ETHTOOL_MSG_LINKMODES_GET = C.ETHTOOL_MSG_LINKMODES_GET
|
||||
ETHTOOL_MSG_LINKMODES_SET = C.ETHTOOL_MSG_LINKMODES_SET
|
||||
ETHTOOL_MSG_LINKSTATE_GET = C.ETHTOOL_MSG_LINKSTATE_GET
|
||||
ETHTOOL_MSG_DEBUG_GET = C.ETHTOOL_MSG_DEBUG_GET
|
||||
ETHTOOL_MSG_DEBUG_SET = C.ETHTOOL_MSG_DEBUG_SET
|
||||
ETHTOOL_MSG_WOL_GET = C.ETHTOOL_MSG_WOL_GET
|
||||
ETHTOOL_MSG_WOL_SET = C.ETHTOOL_MSG_WOL_SET
|
||||
ETHTOOL_MSG_FEATURES_GET = C.ETHTOOL_MSG_FEATURES_GET
|
||||
ETHTOOL_MSG_FEATURES_SET = C.ETHTOOL_MSG_FEATURES_SET
|
||||
ETHTOOL_MSG_PRIVFLAGS_GET = C.ETHTOOL_MSG_PRIVFLAGS_GET
|
||||
ETHTOOL_MSG_PRIVFLAGS_SET = C.ETHTOOL_MSG_PRIVFLAGS_SET
|
||||
ETHTOOL_MSG_RINGS_GET = C.ETHTOOL_MSG_RINGS_GET
|
||||
ETHTOOL_MSG_RINGS_SET = C.ETHTOOL_MSG_RINGS_SET
|
||||
ETHTOOL_MSG_CHANNELS_GET = C.ETHTOOL_MSG_CHANNELS_GET
|
||||
ETHTOOL_MSG_CHANNELS_SET = C.ETHTOOL_MSG_CHANNELS_SET
|
||||
ETHTOOL_MSG_COALESCE_GET = C.ETHTOOL_MSG_COALESCE_GET
|
||||
ETHTOOL_MSG_COALESCE_SET = C.ETHTOOL_MSG_COALESCE_SET
|
||||
ETHTOOL_MSG_PAUSE_GET = C.ETHTOOL_MSG_PAUSE_GET
|
||||
ETHTOOL_MSG_PAUSE_SET = C.ETHTOOL_MSG_PAUSE_SET
|
||||
ETHTOOL_MSG_EEE_GET = C.ETHTOOL_MSG_EEE_GET
|
||||
ETHTOOL_MSG_EEE_SET = C.ETHTOOL_MSG_EEE_SET
|
||||
ETHTOOL_MSG_TSINFO_GET = C.ETHTOOL_MSG_TSINFO_GET
|
||||
ETHTOOL_MSG_CABLE_TEST_ACT = C.ETHTOOL_MSG_CABLE_TEST_ACT
|
||||
ETHTOOL_MSG_CABLE_TEST_TDR_ACT = C.ETHTOOL_MSG_CABLE_TEST_TDR_ACT
|
||||
ETHTOOL_MSG_TUNNEL_INFO_GET = C.ETHTOOL_MSG_TUNNEL_INFO_GET
|
||||
ETHTOOL_MSG_USER_MAX = C.ETHTOOL_MSG_USER_MAX
|
||||
ETHTOOL_MSG_KERNEL_NONE = C.ETHTOOL_MSG_KERNEL_NONE
|
||||
ETHTOOL_MSG_STRSET_GET_REPLY = C.ETHTOOL_MSG_STRSET_GET_REPLY
|
||||
ETHTOOL_MSG_LINKINFO_GET_REPLY = C.ETHTOOL_MSG_LINKINFO_GET_REPLY
|
||||
ETHTOOL_MSG_LINKINFO_NTF = C.ETHTOOL_MSG_LINKINFO_NTF
|
||||
ETHTOOL_MSG_LINKMODES_GET_REPLY = C.ETHTOOL_MSG_LINKMODES_GET_REPLY
|
||||
ETHTOOL_MSG_LINKMODES_NTF = C.ETHTOOL_MSG_LINKMODES_NTF
|
||||
ETHTOOL_MSG_LINKSTATE_GET_REPLY = C.ETHTOOL_MSG_LINKSTATE_GET_REPLY
|
||||
ETHTOOL_MSG_DEBUG_GET_REPLY = C.ETHTOOL_MSG_DEBUG_GET_REPLY
|
||||
ETHTOOL_MSG_DEBUG_NTF = C.ETHTOOL_MSG_DEBUG_NTF
|
||||
ETHTOOL_MSG_WOL_GET_REPLY = C.ETHTOOL_MSG_WOL_GET_REPLY
|
||||
ETHTOOL_MSG_WOL_NTF = C.ETHTOOL_MSG_WOL_NTF
|
||||
ETHTOOL_MSG_FEATURES_GET_REPLY = C.ETHTOOL_MSG_FEATURES_GET_REPLY
|
||||
ETHTOOL_MSG_FEATURES_SET_REPLY = C.ETHTOOL_MSG_FEATURES_SET_REPLY
|
||||
ETHTOOL_MSG_FEATURES_NTF = C.ETHTOOL_MSG_FEATURES_NTF
|
||||
ETHTOOL_MSG_PRIVFLAGS_GET_REPLY = C.ETHTOOL_MSG_PRIVFLAGS_GET_REPLY
|
||||
ETHTOOL_MSG_PRIVFLAGS_NTF = C.ETHTOOL_MSG_PRIVFLAGS_NTF
|
||||
ETHTOOL_MSG_RINGS_GET_REPLY = C.ETHTOOL_MSG_RINGS_GET_REPLY
|
||||
ETHTOOL_MSG_RINGS_NTF = C.ETHTOOL_MSG_RINGS_NTF
|
||||
ETHTOOL_MSG_CHANNELS_GET_REPLY = C.ETHTOOL_MSG_CHANNELS_GET_REPLY
|
||||
ETHTOOL_MSG_CHANNELS_NTF = C.ETHTOOL_MSG_CHANNELS_NTF
|
||||
ETHTOOL_MSG_COALESCE_GET_REPLY = C.ETHTOOL_MSG_COALESCE_GET_REPLY
|
||||
ETHTOOL_MSG_COALESCE_NTF = C.ETHTOOL_MSG_COALESCE_NTF
|
||||
ETHTOOL_MSG_PAUSE_GET_REPLY = C.ETHTOOL_MSG_PAUSE_GET_REPLY
|
||||
ETHTOOL_MSG_PAUSE_NTF = C.ETHTOOL_MSG_PAUSE_NTF
|
||||
ETHTOOL_MSG_EEE_GET_REPLY = C.ETHTOOL_MSG_EEE_GET_REPLY
|
||||
ETHTOOL_MSG_EEE_NTF = C.ETHTOOL_MSG_EEE_NTF
|
||||
ETHTOOL_MSG_TSINFO_GET_REPLY = C.ETHTOOL_MSG_TSINFO_GET_REPLY
|
||||
ETHTOOL_MSG_CABLE_TEST_NTF = C.ETHTOOL_MSG_CABLE_TEST_NTF
|
||||
ETHTOOL_MSG_CABLE_TEST_TDR_NTF = C.ETHTOOL_MSG_CABLE_TEST_TDR_NTF
|
||||
ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = C.ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY
|
||||
ETHTOOL_MSG_KERNEL_MAX = C.ETHTOOL_MSG_KERNEL_MAX
|
||||
ETHTOOL_A_HEADER_UNSPEC = C.ETHTOOL_A_HEADER_UNSPEC
|
||||
ETHTOOL_A_HEADER_DEV_INDEX = C.ETHTOOL_A_HEADER_DEV_INDEX
|
||||
ETHTOOL_A_HEADER_DEV_NAME = C.ETHTOOL_A_HEADER_DEV_NAME
|
||||
ETHTOOL_A_HEADER_FLAGS = C.ETHTOOL_A_HEADER_FLAGS
|
||||
ETHTOOL_A_HEADER_MAX = C.ETHTOOL_A_HEADER_MAX
|
||||
ETHTOOL_A_BITSET_BIT_UNSPEC = C.ETHTOOL_A_BITSET_BIT_UNSPEC
|
||||
ETHTOOL_A_BITSET_BIT_INDEX = C.ETHTOOL_A_BITSET_BIT_INDEX
|
||||
ETHTOOL_A_BITSET_BIT_NAME = C.ETHTOOL_A_BITSET_BIT_NAME
|
||||
ETHTOOL_A_BITSET_BIT_VALUE = C.ETHTOOL_A_BITSET_BIT_VALUE
|
||||
ETHTOOL_A_BITSET_BIT_MAX = C.ETHTOOL_A_BITSET_BIT_MAX
|
||||
ETHTOOL_A_BITSET_BITS_UNSPEC = C.ETHTOOL_A_BITSET_BITS_UNSPEC
|
||||
ETHTOOL_A_BITSET_BITS_BIT = C.ETHTOOL_A_BITSET_BITS_BIT
|
||||
ETHTOOL_A_BITSET_BITS_MAX = C.ETHTOOL_A_BITSET_BITS_MAX
|
||||
ETHTOOL_A_BITSET_UNSPEC = C.ETHTOOL_A_BITSET_UNSPEC
|
||||
ETHTOOL_A_BITSET_NOMASK = C.ETHTOOL_A_BITSET_NOMASK
|
||||
ETHTOOL_A_BITSET_SIZE = C.ETHTOOL_A_BITSET_SIZE
|
||||
ETHTOOL_A_BITSET_BITS = C.ETHTOOL_A_BITSET_BITS
|
||||
ETHTOOL_A_BITSET_VALUE = C.ETHTOOL_A_BITSET_VALUE
|
||||
ETHTOOL_A_BITSET_MASK = C.ETHTOOL_A_BITSET_MASK
|
||||
ETHTOOL_A_BITSET_MAX = C.ETHTOOL_A_BITSET_MAX
|
||||
ETHTOOL_A_STRING_UNSPEC = C.ETHTOOL_A_STRING_UNSPEC
|
||||
ETHTOOL_A_STRING_INDEX = C.ETHTOOL_A_STRING_INDEX
|
||||
ETHTOOL_A_STRING_VALUE = C.ETHTOOL_A_STRING_VALUE
|
||||
ETHTOOL_A_STRING_MAX = C.ETHTOOL_A_STRING_MAX
|
||||
ETHTOOL_A_STRINGS_UNSPEC = C.ETHTOOL_A_STRINGS_UNSPEC
|
||||
ETHTOOL_A_STRINGS_STRING = C.ETHTOOL_A_STRINGS_STRING
|
||||
ETHTOOL_A_STRINGS_MAX = C.ETHTOOL_A_STRINGS_MAX
|
||||
ETHTOOL_A_STRINGSET_UNSPEC = C.ETHTOOL_A_STRINGSET_UNSPEC
|
||||
ETHTOOL_A_STRINGSET_ID = C.ETHTOOL_A_STRINGSET_ID
|
||||
ETHTOOL_A_STRINGSET_COUNT = C.ETHTOOL_A_STRINGSET_COUNT
|
||||
ETHTOOL_A_STRINGSET_STRINGS = C.ETHTOOL_A_STRINGSET_STRINGS
|
||||
ETHTOOL_A_STRINGSET_MAX = C.ETHTOOL_A_STRINGSET_MAX
|
||||
ETHTOOL_A_STRINGSETS_UNSPEC = C.ETHTOOL_A_STRINGSETS_UNSPEC
|
||||
ETHTOOL_A_STRINGSETS_STRINGSET = C.ETHTOOL_A_STRINGSETS_STRINGSET
|
||||
ETHTOOL_A_STRINGSETS_MAX = C.ETHTOOL_A_STRINGSETS_MAX
|
||||
ETHTOOL_A_STRSET_UNSPEC = C.ETHTOOL_A_STRSET_UNSPEC
|
||||
ETHTOOL_A_STRSET_HEADER = C.ETHTOOL_A_STRSET_HEADER
|
||||
ETHTOOL_A_STRSET_STRINGSETS = C.ETHTOOL_A_STRSET_STRINGSETS
|
||||
ETHTOOL_A_STRSET_COUNTS_ONLY = C.ETHTOOL_A_STRSET_COUNTS_ONLY
|
||||
ETHTOOL_A_STRSET_MAX = C.ETHTOOL_A_STRSET_MAX
|
||||
ETHTOOL_A_LINKINFO_UNSPEC = C.ETHTOOL_A_LINKINFO_UNSPEC
|
||||
ETHTOOL_A_LINKINFO_HEADER = C.ETHTOOL_A_LINKINFO_HEADER
|
||||
ETHTOOL_A_LINKINFO_PORT = C.ETHTOOL_A_LINKINFO_PORT
|
||||
ETHTOOL_A_LINKINFO_PHYADDR = C.ETHTOOL_A_LINKINFO_PHYADDR
|
||||
ETHTOOL_A_LINKINFO_TP_MDIX = C.ETHTOOL_A_LINKINFO_TP_MDIX
|
||||
ETHTOOL_A_LINKINFO_TP_MDIX_CTRL = C.ETHTOOL_A_LINKINFO_TP_MDIX_CTRL
|
||||
ETHTOOL_A_LINKINFO_TRANSCEIVER = C.ETHTOOL_A_LINKINFO_TRANSCEIVER
|
||||
ETHTOOL_A_LINKINFO_MAX = C.ETHTOOL_A_LINKINFO_MAX
|
||||
ETHTOOL_A_LINKMODES_UNSPEC = C.ETHTOOL_A_LINKMODES_UNSPEC
|
||||
ETHTOOL_A_LINKMODES_HEADER = C.ETHTOOL_A_LINKMODES_HEADER
|
||||
ETHTOOL_A_LINKMODES_AUTONEG = C.ETHTOOL_A_LINKMODES_AUTONEG
|
||||
ETHTOOL_A_LINKMODES_OURS = C.ETHTOOL_A_LINKMODES_OURS
|
||||
ETHTOOL_A_LINKMODES_PEER = C.ETHTOOL_A_LINKMODES_PEER
|
||||
ETHTOOL_A_LINKMODES_SPEED = C.ETHTOOL_A_LINKMODES_SPEED
|
||||
ETHTOOL_A_LINKMODES_DUPLEX = C.ETHTOOL_A_LINKMODES_DUPLEX
|
||||
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG = C.ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG
|
||||
ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE = C.ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE
|
||||
ETHTOOL_A_LINKMODES_MAX = C.ETHTOOL_A_LINKMODES_MAX
|
||||
ETHTOOL_A_LINKSTATE_UNSPEC = C.ETHTOOL_A_LINKSTATE_UNSPEC
|
||||
ETHTOOL_A_LINKSTATE_HEADER = C.ETHTOOL_A_LINKSTATE_HEADER
|
||||
ETHTOOL_A_LINKSTATE_LINK = C.ETHTOOL_A_LINKSTATE_LINK
|
||||
ETHTOOL_A_LINKSTATE_SQI = C.ETHTOOL_A_LINKSTATE_SQI
|
||||
ETHTOOL_A_LINKSTATE_SQI_MAX = C.ETHTOOL_A_LINKSTATE_SQI_MAX
|
||||
ETHTOOL_A_LINKSTATE_EXT_STATE = C.ETHTOOL_A_LINKSTATE_EXT_STATE
|
||||
ETHTOOL_A_LINKSTATE_EXT_SUBSTATE = C.ETHTOOL_A_LINKSTATE_EXT_SUBSTATE
|
||||
ETHTOOL_A_LINKSTATE_MAX = C.ETHTOOL_A_LINKSTATE_MAX
|
||||
ETHTOOL_A_DEBUG_UNSPEC = C.ETHTOOL_A_DEBUG_UNSPEC
|
||||
ETHTOOL_A_DEBUG_HEADER = C.ETHTOOL_A_DEBUG_HEADER
|
||||
ETHTOOL_A_DEBUG_MSGMASK = C.ETHTOOL_A_DEBUG_MSGMASK
|
||||
ETHTOOL_A_DEBUG_MAX = C.ETHTOOL_A_DEBUG_MAX
|
||||
ETHTOOL_A_WOL_UNSPEC = C.ETHTOOL_A_WOL_UNSPEC
|
||||
ETHTOOL_A_WOL_HEADER = C.ETHTOOL_A_WOL_HEADER
|
||||
ETHTOOL_A_WOL_MODES = C.ETHTOOL_A_WOL_MODES
|
||||
ETHTOOL_A_WOL_SOPASS = C.ETHTOOL_A_WOL_SOPASS
|
||||
ETHTOOL_A_WOL_MAX = C.ETHTOOL_A_WOL_MAX
|
||||
ETHTOOL_A_FEATURES_UNSPEC = C.ETHTOOL_A_FEATURES_UNSPEC
|
||||
ETHTOOL_A_FEATURES_HEADER = C.ETHTOOL_A_FEATURES_HEADER
|
||||
ETHTOOL_A_FEATURES_HW = C.ETHTOOL_A_FEATURES_HW
|
||||
ETHTOOL_A_FEATURES_WANTED = C.ETHTOOL_A_FEATURES_WANTED
|
||||
ETHTOOL_A_FEATURES_ACTIVE = C.ETHTOOL_A_FEATURES_ACTIVE
|
||||
ETHTOOL_A_FEATURES_NOCHANGE = C.ETHTOOL_A_FEATURES_NOCHANGE
|
||||
ETHTOOL_A_FEATURES_MAX = C.ETHTOOL_A_FEATURES_MAX
|
||||
ETHTOOL_A_PRIVFLAGS_UNSPEC = C.ETHTOOL_A_PRIVFLAGS_UNSPEC
|
||||
ETHTOOL_A_PRIVFLAGS_HEADER = C.ETHTOOL_A_PRIVFLAGS_HEADER
|
||||
ETHTOOL_A_PRIVFLAGS_FLAGS = C.ETHTOOL_A_PRIVFLAGS_FLAGS
|
||||
ETHTOOL_A_PRIVFLAGS_MAX = C.ETHTOOL_A_PRIVFLAGS_MAX
|
||||
ETHTOOL_A_RINGS_UNSPEC = C.ETHTOOL_A_RINGS_UNSPEC
|
||||
ETHTOOL_A_RINGS_HEADER = C.ETHTOOL_A_RINGS_HEADER
|
||||
ETHTOOL_A_RINGS_RX_MAX = C.ETHTOOL_A_RINGS_RX_MAX
|
||||
ETHTOOL_A_RINGS_RX_MINI_MAX = C.ETHTOOL_A_RINGS_RX_MINI_MAX
|
||||
ETHTOOL_A_RINGS_RX_JUMBO_MAX = C.ETHTOOL_A_RINGS_RX_JUMBO_MAX
|
||||
ETHTOOL_A_RINGS_TX_MAX = C.ETHTOOL_A_RINGS_TX_MAX
|
||||
ETHTOOL_A_RINGS_RX = C.ETHTOOL_A_RINGS_RX
|
||||
ETHTOOL_A_RINGS_RX_MINI = C.ETHTOOL_A_RINGS_RX_MINI
|
||||
ETHTOOL_A_RINGS_RX_JUMBO = C.ETHTOOL_A_RINGS_RX_JUMBO
|
||||
ETHTOOL_A_RINGS_TX = C.ETHTOOL_A_RINGS_TX
|
||||
ETHTOOL_A_RINGS_MAX = C.ETHTOOL_A_RINGS_MAX
|
||||
ETHTOOL_A_CHANNELS_UNSPEC = C.ETHTOOL_A_CHANNELS_UNSPEC
|
||||
ETHTOOL_A_CHANNELS_HEADER = C.ETHTOOL_A_CHANNELS_HEADER
|
||||
ETHTOOL_A_CHANNELS_RX_MAX = C.ETHTOOL_A_CHANNELS_RX_MAX
|
||||
ETHTOOL_A_CHANNELS_TX_MAX = C.ETHTOOL_A_CHANNELS_TX_MAX
|
||||
ETHTOOL_A_CHANNELS_OTHER_MAX = C.ETHTOOL_A_CHANNELS_OTHER_MAX
|
||||
ETHTOOL_A_CHANNELS_COMBINED_MAX = C.ETHTOOL_A_CHANNELS_COMBINED_MAX
|
||||
ETHTOOL_A_CHANNELS_RX_COUNT = C.ETHTOOL_A_CHANNELS_RX_COUNT
|
||||
ETHTOOL_A_CHANNELS_TX_COUNT = C.ETHTOOL_A_CHANNELS_TX_COUNT
|
||||
ETHTOOL_A_CHANNELS_OTHER_COUNT = C.ETHTOOL_A_CHANNELS_OTHER_COUNT
|
||||
ETHTOOL_A_CHANNELS_COMBINED_COUNT = C.ETHTOOL_A_CHANNELS_COMBINED_COUNT
|
||||
ETHTOOL_A_CHANNELS_MAX = C.ETHTOOL_A_CHANNELS_MAX
|
||||
ETHTOOL_A_COALESCE_UNSPEC = C.ETHTOOL_A_COALESCE_UNSPEC
|
||||
ETHTOOL_A_COALESCE_HEADER = C.ETHTOOL_A_COALESCE_HEADER
|
||||
ETHTOOL_A_COALESCE_RX_USECS = C.ETHTOOL_A_COALESCE_RX_USECS
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES = C.ETHTOOL_A_COALESCE_RX_MAX_FRAMES
|
||||
ETHTOOL_A_COALESCE_RX_USECS_IRQ = C.ETHTOOL_A_COALESCE_RX_USECS_IRQ
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ = C.ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ
|
||||
ETHTOOL_A_COALESCE_TX_USECS = C.ETHTOOL_A_COALESCE_TX_USECS
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES = C.ETHTOOL_A_COALESCE_TX_MAX_FRAMES
|
||||
ETHTOOL_A_COALESCE_TX_USECS_IRQ = C.ETHTOOL_A_COALESCE_TX_USECS_IRQ
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ = C.ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ
|
||||
ETHTOOL_A_COALESCE_STATS_BLOCK_USECS = C.ETHTOOL_A_COALESCE_STATS_BLOCK_USECS
|
||||
ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX = C.ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX
|
||||
ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX = C.ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX
|
||||
ETHTOOL_A_COALESCE_PKT_RATE_LOW = C.ETHTOOL_A_COALESCE_PKT_RATE_LOW
|
||||
ETHTOOL_A_COALESCE_RX_USECS_LOW = C.ETHTOOL_A_COALESCE_RX_USECS_LOW
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW = C.ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW
|
||||
ETHTOOL_A_COALESCE_TX_USECS_LOW = C.ETHTOOL_A_COALESCE_TX_USECS_LOW
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW = C.ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW
|
||||
ETHTOOL_A_COALESCE_PKT_RATE_HIGH = C.ETHTOOL_A_COALESCE_PKT_RATE_HIGH
|
||||
ETHTOOL_A_COALESCE_RX_USECS_HIGH = C.ETHTOOL_A_COALESCE_RX_USECS_HIGH
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH = C.ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH
|
||||
ETHTOOL_A_COALESCE_TX_USECS_HIGH = C.ETHTOOL_A_COALESCE_TX_USECS_HIGH
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH = C.ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH
|
||||
ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL = C.ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL
|
||||
ETHTOOL_A_COALESCE_MAX = C.ETHTOOL_A_COALESCE_MAX
|
||||
ETHTOOL_A_PAUSE_UNSPEC = C.ETHTOOL_A_PAUSE_UNSPEC
|
||||
ETHTOOL_A_PAUSE_HEADER = C.ETHTOOL_A_PAUSE_HEADER
|
||||
ETHTOOL_A_PAUSE_AUTONEG = C.ETHTOOL_A_PAUSE_AUTONEG
|
||||
ETHTOOL_A_PAUSE_RX = C.ETHTOOL_A_PAUSE_RX
|
||||
ETHTOOL_A_PAUSE_TX = C.ETHTOOL_A_PAUSE_TX
|
||||
ETHTOOL_A_PAUSE_STATS = C.ETHTOOL_A_PAUSE_STATS
|
||||
ETHTOOL_A_PAUSE_MAX = C.ETHTOOL_A_PAUSE_MAX
|
||||
ETHTOOL_A_PAUSE_STAT_UNSPEC = C.ETHTOOL_A_PAUSE_STAT_UNSPEC
|
||||
ETHTOOL_A_PAUSE_STAT_PAD = C.ETHTOOL_A_PAUSE_STAT_PAD
|
||||
ETHTOOL_A_PAUSE_STAT_TX_FRAMES = C.ETHTOOL_A_PAUSE_STAT_TX_FRAMES
|
||||
ETHTOOL_A_PAUSE_STAT_RX_FRAMES = C.ETHTOOL_A_PAUSE_STAT_RX_FRAMES
|
||||
ETHTOOL_A_PAUSE_STAT_MAX = C.ETHTOOL_A_PAUSE_STAT_MAX
|
||||
ETHTOOL_A_EEE_UNSPEC = C.ETHTOOL_A_EEE_UNSPEC
|
||||
ETHTOOL_A_EEE_HEADER = C.ETHTOOL_A_EEE_HEADER
|
||||
ETHTOOL_A_EEE_MODES_OURS = C.ETHTOOL_A_EEE_MODES_OURS
|
||||
ETHTOOL_A_EEE_MODES_PEER = C.ETHTOOL_A_EEE_MODES_PEER
|
||||
ETHTOOL_A_EEE_ACTIVE = C.ETHTOOL_A_EEE_ACTIVE
|
||||
ETHTOOL_A_EEE_ENABLED = C.ETHTOOL_A_EEE_ENABLED
|
||||
ETHTOOL_A_EEE_TX_LPI_ENABLED = C.ETHTOOL_A_EEE_TX_LPI_ENABLED
|
||||
ETHTOOL_A_EEE_TX_LPI_TIMER = C.ETHTOOL_A_EEE_TX_LPI_TIMER
|
||||
ETHTOOL_A_EEE_MAX = C.ETHTOOL_A_EEE_MAX
|
||||
ETHTOOL_A_TSINFO_UNSPEC = C.ETHTOOL_A_TSINFO_UNSPEC
|
||||
ETHTOOL_A_TSINFO_HEADER = C.ETHTOOL_A_TSINFO_HEADER
|
||||
ETHTOOL_A_TSINFO_TIMESTAMPING = C.ETHTOOL_A_TSINFO_TIMESTAMPING
|
||||
ETHTOOL_A_TSINFO_TX_TYPES = C.ETHTOOL_A_TSINFO_TX_TYPES
|
||||
ETHTOOL_A_TSINFO_RX_FILTERS = C.ETHTOOL_A_TSINFO_RX_FILTERS
|
||||
ETHTOOL_A_TSINFO_PHC_INDEX = C.ETHTOOL_A_TSINFO_PHC_INDEX
|
||||
ETHTOOL_A_TSINFO_MAX = C.ETHTOOL_A_TSINFO_MAX
|
||||
ETHTOOL_A_CABLE_TEST_UNSPEC = C.ETHTOOL_A_CABLE_TEST_UNSPEC
|
||||
ETHTOOL_A_CABLE_TEST_HEADER = C.ETHTOOL_A_CABLE_TEST_HEADER
|
||||
ETHTOOL_A_CABLE_TEST_MAX = C.ETHTOOL_A_CABLE_TEST_MAX
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC = C.ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_OK = C.ETHTOOL_A_CABLE_RESULT_CODE_OK
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_OPEN = C.ETHTOOL_A_CABLE_RESULT_CODE_OPEN
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT = C.ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT = C.ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT
|
||||
ETHTOOL_A_CABLE_PAIR_A = C.ETHTOOL_A_CABLE_PAIR_A
|
||||
ETHTOOL_A_CABLE_PAIR_B = C.ETHTOOL_A_CABLE_PAIR_B
|
||||
ETHTOOL_A_CABLE_PAIR_C = C.ETHTOOL_A_CABLE_PAIR_C
|
||||
ETHTOOL_A_CABLE_PAIR_D = C.ETHTOOL_A_CABLE_PAIR_D
|
||||
ETHTOOL_A_CABLE_RESULT_UNSPEC = C.ETHTOOL_A_CABLE_RESULT_UNSPEC
|
||||
ETHTOOL_A_CABLE_RESULT_PAIR = C.ETHTOOL_A_CABLE_RESULT_PAIR
|
||||
ETHTOOL_A_CABLE_RESULT_CODE = C.ETHTOOL_A_CABLE_RESULT_CODE
|
||||
ETHTOOL_A_CABLE_RESULT_MAX = C.ETHTOOL_A_CABLE_RESULT_MAX
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = C.ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = C.ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_CM = C.ETHTOOL_A_CABLE_FAULT_LENGTH_CM
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = C.ETHTOOL_A_CABLE_FAULT_LENGTH_MAX
|
||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = C.ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC
|
||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = C.ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED
|
||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = C.ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED
|
||||
ETHTOOL_A_CABLE_NEST_UNSPEC = C.ETHTOOL_A_CABLE_NEST_UNSPEC
|
||||
ETHTOOL_A_CABLE_NEST_RESULT = C.ETHTOOL_A_CABLE_NEST_RESULT
|
||||
ETHTOOL_A_CABLE_NEST_FAULT_LENGTH = C.ETHTOOL_A_CABLE_NEST_FAULT_LENGTH
|
||||
ETHTOOL_A_CABLE_NEST_MAX = C.ETHTOOL_A_CABLE_NEST_MAX
|
||||
ETHTOOL_A_CABLE_TEST_NTF_UNSPEC = C.ETHTOOL_A_CABLE_TEST_NTF_UNSPEC
|
||||
ETHTOOL_A_CABLE_TEST_NTF_HEADER = C.ETHTOOL_A_CABLE_TEST_NTF_HEADER
|
||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS = C.ETHTOOL_A_CABLE_TEST_NTF_STATUS
|
||||
ETHTOOL_A_CABLE_TEST_NTF_NEST = C.ETHTOOL_A_CABLE_TEST_NTF_NEST
|
||||
ETHTOOL_A_CABLE_TEST_NTF_MAX = C.ETHTOOL_A_CABLE_TEST_NTF_MAX
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX
|
||||
ETHTOOL_A_CABLE_TEST_TDR_UNSPEC = C.ETHTOOL_A_CABLE_TEST_TDR_UNSPEC
|
||||
ETHTOOL_A_CABLE_TEST_TDR_HEADER = C.ETHTOOL_A_CABLE_TEST_TDR_HEADER
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG = C.ETHTOOL_A_CABLE_TEST_TDR_CFG
|
||||
ETHTOOL_A_CABLE_TEST_TDR_MAX = C.ETHTOOL_A_CABLE_TEST_TDR_MAX
|
||||
ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC = C.ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC
|
||||
ETHTOOL_A_CABLE_AMPLITUDE_PAIR = C.ETHTOOL_A_CABLE_AMPLITUDE_PAIR
|
||||
ETHTOOL_A_CABLE_AMPLITUDE_mV = C.ETHTOOL_A_CABLE_AMPLITUDE_mV
|
||||
ETHTOOL_A_CABLE_AMPLITUDE_MAX = C.ETHTOOL_A_CABLE_AMPLITUDE_MAX
|
||||
ETHTOOL_A_CABLE_PULSE_UNSPEC = C.ETHTOOL_A_CABLE_PULSE_UNSPEC
|
||||
ETHTOOL_A_CABLE_PULSE_mV = C.ETHTOOL_A_CABLE_PULSE_mV
|
||||
ETHTOOL_A_CABLE_PULSE_MAX = C.ETHTOOL_A_CABLE_PULSE_MAX
|
||||
ETHTOOL_A_CABLE_STEP_UNSPEC = C.ETHTOOL_A_CABLE_STEP_UNSPEC
|
||||
ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE = C.ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE
|
||||
ETHTOOL_A_CABLE_STEP_LAST_DISTANCE = C.ETHTOOL_A_CABLE_STEP_LAST_DISTANCE
|
||||
ETHTOOL_A_CABLE_STEP_STEP_DISTANCE = C.ETHTOOL_A_CABLE_STEP_STEP_DISTANCE
|
||||
ETHTOOL_A_CABLE_STEP_MAX = C.ETHTOOL_A_CABLE_STEP_MAX
|
||||
ETHTOOL_A_CABLE_TDR_NEST_UNSPEC = C.ETHTOOL_A_CABLE_TDR_NEST_UNSPEC
|
||||
ETHTOOL_A_CABLE_TDR_NEST_STEP = C.ETHTOOL_A_CABLE_TDR_NEST_STEP
|
||||
ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE = C.ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE
|
||||
ETHTOOL_A_CABLE_TDR_NEST_PULSE = C.ETHTOOL_A_CABLE_TDR_NEST_PULSE
|
||||
ETHTOOL_A_CABLE_TDR_NEST_MAX = C.ETHTOOL_A_CABLE_TDR_NEST_MAX
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC = C.ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER = C.ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS = C.ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST = C.ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = C.ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_VXLAN = C.ETHTOOL_UDP_TUNNEL_TYPE_VXLAN
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_GENEVE = C.ETHTOOL_UDP_TUNNEL_TYPE_GENEVE
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE = C.ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC = C.ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT = C.ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE = C.ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = C.ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC = C.ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE = C.ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES = C.ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY = C.ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = C.ETHTOOL_A_TUNNEL_UDP_TABLE_MAX
|
||||
ETHTOOL_A_TUNNEL_UDP_UNSPEC = C.ETHTOOL_A_TUNNEL_UDP_UNSPEC
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE = C.ETHTOOL_A_TUNNEL_UDP_TABLE
|
||||
ETHTOOL_A_TUNNEL_UDP_MAX = C.ETHTOOL_A_TUNNEL_UDP_MAX
|
||||
ETHTOOL_A_TUNNEL_INFO_UNSPEC = C.ETHTOOL_A_TUNNEL_INFO_UNSPEC
|
||||
ETHTOOL_A_TUNNEL_INFO_HEADER = C.ETHTOOL_A_TUNNEL_INFO_HEADER
|
||||
ETHTOOL_A_TUNNEL_INFO_UDP_PORTS = C.ETHTOOL_A_TUNNEL_INFO_UDP_PORTS
|
||||
ETHTOOL_A_TUNNEL_INFO_MAX = C.ETHTOOL_A_TUNNEL_INFO_MAX
|
||||
)
|
||||
|
||||
@@ -204,6 +204,7 @@ struct ltchars {
|
||||
#include <linux/devlink.h>
|
||||
#include <linux/dm-ioctl.h>
|
||||
#include <linux/errqueue.h>
|
||||
#include <linux/ethtool_netlink.h>
|
||||
#include <linux/falloc.h>
|
||||
#include <linux/fanotify.h>
|
||||
#include <linux/filter.h>
|
||||
@@ -563,6 +564,7 @@ ccflags="$@"
|
||||
$2 ~ /^TIPC_/ ||
|
||||
$2 !~ "DEVLINK_RELOAD_LIMITS_VALID_MASK" &&
|
||||
$2 ~ /^DEVLINK_/ ||
|
||||
$2 ~ /^ETHTOOL_/ ||
|
||||
$2 ~ /^LWTUNNEL_IP/ ||
|
||||
$2 !~ "WMESGLEN" &&
|
||||
$2 ~ /^W[A-Z0-9]+$/ ||
|
||||
|
||||
@@ -119,13 +119,16 @@ type attrList struct {
|
||||
Forkattr uint32
|
||||
}
|
||||
|
||||
//sysnb pipe() (r int, w int, err error)
|
||||
//sysnb pipe(p *[2]int32) (err error)
|
||||
|
||||
func Pipe(p []int) (err error) {
|
||||
if len(p) != 2 {
|
||||
return EINVAL
|
||||
}
|
||||
p[0], p[1], err = pipe()
|
||||
var x [2]int32
|
||||
err = pipe(&x)
|
||||
p[0] = int(x[0])
|
||||
p[1] = int(x[1])
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -75,16 +75,3 @@ func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
//sysnb pipe2(p *[2]_C_int, flags int) (err error)
|
||||
|
||||
func Pipe2(p []int, flags int) error {
|
||||
if len(p) != 2 {
|
||||
return EINVAL
|
||||
}
|
||||
var pp [2]_C_int
|
||||
err := pipe2(&pp, flags)
|
||||
p[0] = int(pp[0])
|
||||
p[1] = int(pp[1])
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -68,6 +68,19 @@ func Pipe(p []int) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
//sysnb pipe2(p *[2]_C_int, flags int) (err error)
|
||||
|
||||
func Pipe2(p []int, flags int) error {
|
||||
if len(p) != 2 {
|
||||
return EINVAL
|
||||
}
|
||||
var pp [2]_C_int
|
||||
err := pipe2(&pp, flags)
|
||||
p[0] = int(pp[0])
|
||||
p[1] = int(pp[1])
|
||||
return err
|
||||
}
|
||||
|
||||
func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||
if sa.Port < 0 || sa.Port > 0xFFFF {
|
||||
return nil, 0, EINVAL
|
||||
|
||||
@@ -13,6 +13,48 @@ import (
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
func TestPipe2(t *testing.T) {
|
||||
const s = "hello"
|
||||
var pipes [2]int
|
||||
err := unix.Pipe2(pipes[:], 0)
|
||||
if err != nil {
|
||||
t.Fatalf("pipe2: %v", err)
|
||||
}
|
||||
r := pipes[0]
|
||||
w := pipes[1]
|
||||
go func() {
|
||||
n, err := unix.Write(w, []byte(s))
|
||||
if err != nil {
|
||||
t.Errorf("bad write: %v", err)
|
||||
return
|
||||
}
|
||||
if n != len(s) {
|
||||
t.Errorf("bad write count: %d", n)
|
||||
return
|
||||
}
|
||||
err = unix.Close(w)
|
||||
if err != nil {
|
||||
t.Errorf("bad close: %v", err)
|
||||
return
|
||||
}
|
||||
}()
|
||||
var buf [10 + len(s)]byte
|
||||
n, err := unix.Read(r, buf[:])
|
||||
if err != nil {
|
||||
t.Fatalf("bad read: %v", err)
|
||||
}
|
||||
if n != len(s) {
|
||||
t.Fatalf("bad read count: %d", n)
|
||||
}
|
||||
if string(buf[:n]) != s {
|
||||
t.Fatalf("bad contents: %s", string(buf[:n]))
|
||||
}
|
||||
err = unix.Close(r)
|
||||
if err != nil {
|
||||
t.Fatalf("bad close: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatvfs(t *testing.T) {
|
||||
if err := unix.Statvfs("", nil); err == nil {
|
||||
t.Fatal(`Statvfs("") expected failure`)
|
||||
|
||||
@@ -896,3 +896,42 @@ func chtmpdir(t *testing.T) func() {
|
||||
os.RemoveAll(d)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPipe(t *testing.T) {
|
||||
const s = "hello"
|
||||
var pipes [2]int
|
||||
unix.Pipe(pipes[:])
|
||||
r := pipes[0]
|
||||
w := pipes[1]
|
||||
go func() {
|
||||
n, err := unix.Write(w, []byte(s))
|
||||
if err != nil {
|
||||
t.Errorf("bad write: %s\n", err)
|
||||
return
|
||||
}
|
||||
if n != len(s) {
|
||||
t.Errorf("bad write count: %d\n", n)
|
||||
return
|
||||
}
|
||||
err = unix.Close(w)
|
||||
if err != nil {
|
||||
t.Errorf("bad close: %s\n", err)
|
||||
return
|
||||
}
|
||||
}()
|
||||
var buf [10 + len(s)]byte
|
||||
n, err := unix.Read(r, buf[:])
|
||||
if err != nil {
|
||||
t.Fatalf("bad read: %s\n", err)
|
||||
}
|
||||
if n != len(s) {
|
||||
t.Fatalf("bad read count: %d\n", n)
|
||||
}
|
||||
if string(buf[:n]) != s {
|
||||
t.Fatalf("bad contents: %s\n", string(buf[:n]))
|
||||
}
|
||||
err = unix.Close(r)
|
||||
if err != nil {
|
||||
t.Fatalf("bad close: %s\n", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -527,6 +527,119 @@ const (
|
||||
EPOLL_CTL_DEL = 0x2
|
||||
EPOLL_CTL_MOD = 0x3
|
||||
EROFS_SUPER_MAGIC_V1 = 0xe0f5e1e2
|
||||
ESP_V4_FLOW = 0xa
|
||||
ESP_V6_FLOW = 0xc
|
||||
ETHER_FLOW = 0x12
|
||||
ETHTOOL_BUSINFO_LEN = 0x20
|
||||
ETHTOOL_EROMVERS_LEN = 0x20
|
||||
ETHTOOL_FEC_AUTO = 0x2
|
||||
ETHTOOL_FEC_BASER = 0x10
|
||||
ETHTOOL_FEC_LLRS = 0x20
|
||||
ETHTOOL_FEC_NONE = 0x1
|
||||
ETHTOOL_FEC_OFF = 0x4
|
||||
ETHTOOL_FEC_RS = 0x8
|
||||
ETHTOOL_FLAG_ALL = 0x7
|
||||
ETHTOOL_FLAG_COMPACT_BITSETS = 0x1
|
||||
ETHTOOL_FLAG_OMIT_REPLY = 0x2
|
||||
ETHTOOL_FLAG_STATS = 0x4
|
||||
ETHTOOL_FLASHDEV = 0x33
|
||||
ETHTOOL_FLASH_MAX_FILENAME = 0x80
|
||||
ETHTOOL_FWVERS_LEN = 0x20
|
||||
ETHTOOL_F_COMPAT = 0x4
|
||||
ETHTOOL_F_UNSUPPORTED = 0x1
|
||||
ETHTOOL_F_WISH = 0x2
|
||||
ETHTOOL_GCHANNELS = 0x3c
|
||||
ETHTOOL_GCOALESCE = 0xe
|
||||
ETHTOOL_GDRVINFO = 0x3
|
||||
ETHTOOL_GEEE = 0x44
|
||||
ETHTOOL_GEEPROM = 0xb
|
||||
ETHTOOL_GENL_NAME = "ethtool"
|
||||
ETHTOOL_GENL_VERSION = 0x1
|
||||
ETHTOOL_GET_DUMP_DATA = 0x40
|
||||
ETHTOOL_GET_DUMP_FLAG = 0x3f
|
||||
ETHTOOL_GET_TS_INFO = 0x41
|
||||
ETHTOOL_GFEATURES = 0x3a
|
||||
ETHTOOL_GFECPARAM = 0x50
|
||||
ETHTOOL_GFLAGS = 0x25
|
||||
ETHTOOL_GGRO = 0x2b
|
||||
ETHTOOL_GGSO = 0x23
|
||||
ETHTOOL_GLINK = 0xa
|
||||
ETHTOOL_GLINKSETTINGS = 0x4c
|
||||
ETHTOOL_GMODULEEEPROM = 0x43
|
||||
ETHTOOL_GMODULEINFO = 0x42
|
||||
ETHTOOL_GMSGLVL = 0x7
|
||||
ETHTOOL_GPAUSEPARAM = 0x12
|
||||
ETHTOOL_GPERMADDR = 0x20
|
||||
ETHTOOL_GPFLAGS = 0x27
|
||||
ETHTOOL_GPHYSTATS = 0x4a
|
||||
ETHTOOL_GREGS = 0x4
|
||||
ETHTOOL_GRINGPARAM = 0x10
|
||||
ETHTOOL_GRSSH = 0x46
|
||||
ETHTOOL_GRXCLSRLALL = 0x30
|
||||
ETHTOOL_GRXCLSRLCNT = 0x2e
|
||||
ETHTOOL_GRXCLSRULE = 0x2f
|
||||
ETHTOOL_GRXCSUM = 0x14
|
||||
ETHTOOL_GRXFH = 0x29
|
||||
ETHTOOL_GRXFHINDIR = 0x38
|
||||
ETHTOOL_GRXNTUPLE = 0x36
|
||||
ETHTOOL_GRXRINGS = 0x2d
|
||||
ETHTOOL_GSET = 0x1
|
||||
ETHTOOL_GSG = 0x18
|
||||
ETHTOOL_GSSET_INFO = 0x37
|
||||
ETHTOOL_GSTATS = 0x1d
|
||||
ETHTOOL_GSTRINGS = 0x1b
|
||||
ETHTOOL_GTSO = 0x1e
|
||||
ETHTOOL_GTUNABLE = 0x48
|
||||
ETHTOOL_GTXCSUM = 0x16
|
||||
ETHTOOL_GUFO = 0x21
|
||||
ETHTOOL_GWOL = 0x5
|
||||
ETHTOOL_MCGRP_MONITOR_NAME = "monitor"
|
||||
ETHTOOL_NWAY_RST = 0x9
|
||||
ETHTOOL_PERQUEUE = 0x4b
|
||||
ETHTOOL_PHYS_ID = 0x1c
|
||||
ETHTOOL_PHY_EDPD_DFLT_TX_MSECS = 0xffff
|
||||
ETHTOOL_PHY_EDPD_DISABLE = 0x0
|
||||
ETHTOOL_PHY_EDPD_NO_TX = 0xfffe
|
||||
ETHTOOL_PHY_FAST_LINK_DOWN_OFF = 0xff
|
||||
ETHTOOL_PHY_FAST_LINK_DOWN_ON = 0x0
|
||||
ETHTOOL_PHY_GTUNABLE = 0x4e
|
||||
ETHTOOL_PHY_STUNABLE = 0x4f
|
||||
ETHTOOL_RESET = 0x34
|
||||
ETHTOOL_RXNTUPLE_ACTION_CLEAR = -0x2
|
||||
ETHTOOL_RXNTUPLE_ACTION_DROP = -0x1
|
||||
ETHTOOL_RX_FLOW_SPEC_RING = 0xffffffff
|
||||
ETHTOOL_RX_FLOW_SPEC_RING_VF = 0xff00000000
|
||||
ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF = 0x20
|
||||
ETHTOOL_SCHANNELS = 0x3d
|
||||
ETHTOOL_SCOALESCE = 0xf
|
||||
ETHTOOL_SEEE = 0x45
|
||||
ETHTOOL_SEEPROM = 0xc
|
||||
ETHTOOL_SET_DUMP = 0x3e
|
||||
ETHTOOL_SFEATURES = 0x3b
|
||||
ETHTOOL_SFECPARAM = 0x51
|
||||
ETHTOOL_SFLAGS = 0x26
|
||||
ETHTOOL_SGRO = 0x2c
|
||||
ETHTOOL_SGSO = 0x24
|
||||
ETHTOOL_SLINKSETTINGS = 0x4d
|
||||
ETHTOOL_SMSGLVL = 0x8
|
||||
ETHTOOL_SPAUSEPARAM = 0x13
|
||||
ETHTOOL_SPFLAGS = 0x28
|
||||
ETHTOOL_SRINGPARAM = 0x11
|
||||
ETHTOOL_SRSSH = 0x47
|
||||
ETHTOOL_SRXCLSRLDEL = 0x31
|
||||
ETHTOOL_SRXCLSRLINS = 0x32
|
||||
ETHTOOL_SRXCSUM = 0x15
|
||||
ETHTOOL_SRXFH = 0x2a
|
||||
ETHTOOL_SRXFHINDIR = 0x39
|
||||
ETHTOOL_SRXNTUPLE = 0x35
|
||||
ETHTOOL_SSET = 0x2
|
||||
ETHTOOL_SSG = 0x19
|
||||
ETHTOOL_STSO = 0x1f
|
||||
ETHTOOL_STUNABLE = 0x49
|
||||
ETHTOOL_STXCSUM = 0x17
|
||||
ETHTOOL_SUFO = 0x22
|
||||
ETHTOOL_SWOL = 0x6
|
||||
ETHTOOL_TEST = 0x1a
|
||||
ETH_P_1588 = 0x88f7
|
||||
ETH_P_8021AD = 0x88a8
|
||||
ETH_P_8021AH = 0x88e7
|
||||
@@ -996,6 +1109,7 @@ const (
|
||||
IPV6_DONTFRAG = 0x3e
|
||||
IPV6_DROP_MEMBERSHIP = 0x15
|
||||
IPV6_DSTOPTS = 0x3b
|
||||
IPV6_FLOW = 0x11
|
||||
IPV6_FREEBIND = 0x4e
|
||||
IPV6_HDRINCL = 0x24
|
||||
IPV6_HOPLIMIT = 0x34
|
||||
@@ -1045,6 +1159,7 @@ const (
|
||||
IPV6_TRANSPARENT = 0x4b
|
||||
IPV6_UNICAST_HOPS = 0x10
|
||||
IPV6_UNICAST_IF = 0x4c
|
||||
IPV6_USER_FLOW = 0xe
|
||||
IPV6_V6ONLY = 0x1a
|
||||
IPV6_XFRM_POLICY = 0x23
|
||||
IP_ADD_MEMBERSHIP = 0x23
|
||||
@@ -1101,6 +1216,7 @@ const (
|
||||
IP_TTL = 0x2
|
||||
IP_UNBLOCK_SOURCE = 0x25
|
||||
IP_UNICAST_IF = 0x32
|
||||
IP_USER_FLOW = 0xd
|
||||
IP_XFRM_POLICY = 0x11
|
||||
ISOFS_SUPER_MAGIC = 0x9660
|
||||
ISTRIP = 0x20
|
||||
@@ -2340,6 +2456,8 @@ const (
|
||||
TCP_TX_DELAY = 0x25
|
||||
TCP_ULP = 0x1f
|
||||
TCP_USER_TIMEOUT = 0x12
|
||||
TCP_V4_FLOW = 0x1
|
||||
TCP_V6_FLOW = 0x5
|
||||
TCP_WINDOW_CLAMP = 0xa
|
||||
TCP_ZEROCOPY_RECEIVE = 0x23
|
||||
TFD_TIMER_ABSTIME = 0x1
|
||||
@@ -2466,6 +2584,7 @@ const (
|
||||
VM_SOCKETS_INVALID_VERSION = 0xffffffff
|
||||
VQUIT = 0x1
|
||||
VT0 = 0x0
|
||||
WAKE_MAGIC = 0x20
|
||||
WALL = 0x40000000
|
||||
WCLONE = 0x80000000
|
||||
WCONTINUED = 0x8
|
||||
|
||||
@@ -462,10 +462,8 @@ func libc_munlockall_trampoline()
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func pipe() (r int, w int, err error) {
|
||||
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
|
||||
r = int(r0)
|
||||
w = int(r1)
|
||||
func pipe(p *[2]int32) (err error) {
|
||||
_, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
|
||||
@@ -462,10 +462,8 @@ func libc_munlockall_trampoline()
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func pipe() (r int, w int, err error) {
|
||||
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
|
||||
r = int(r0)
|
||||
w = int(r1)
|
||||
func pipe(p *[2]int32) (err error) {
|
||||
_, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
|
||||
@@ -462,10 +462,8 @@ func libc_munlockall_trampoline()
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func pipe() (r int, w int, err error) {
|
||||
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
|
||||
r = int(r0)
|
||||
w = int(r1)
|
||||
func pipe(p *[2]int32) (err error) {
|
||||
_, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
|
||||
@@ -462,10 +462,8 @@ func libc_munlockall_trampoline()
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func pipe() (r int, w int, err error) {
|
||||
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
|
||||
r = int(r0)
|
||||
w = int(r1)
|
||||
func pipe(p *[2]int32) (err error) {
|
||||
_, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
|
||||
@@ -14,22 +14,19 @@ import (
|
||||
//go:cgo_import_dynamic libc_writev writev "libc.so"
|
||||
//go:cgo_import_dynamic libc_pwritev pwritev "libc.so"
|
||||
//go:cgo_import_dynamic libc_accept4 accept4 "libsocket.so"
|
||||
//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so"
|
||||
|
||||
//go:linkname procreadv libc_readv
|
||||
//go:linkname procpreadv libc_preadv
|
||||
//go:linkname procwritev libc_writev
|
||||
//go:linkname procpwritev libc_pwritev
|
||||
//go:linkname procaccept4 libc_accept4
|
||||
//go:linkname procpipe2 libc_pipe2
|
||||
|
||||
var (
|
||||
procreadv,
|
||||
procpreadv,
|
||||
procwritev,
|
||||
procpwritev,
|
||||
procaccept4,
|
||||
procpipe2 syscallFunc
|
||||
procaccept4 syscallFunc
|
||||
)
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
@@ -102,13 +99,3 @@ func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func pipe2(p *[2]_C_int, flags int) (err error) {
|
||||
_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0)
|
||||
if e1 != 0 {
|
||||
err = e1
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
)
|
||||
|
||||
//go:cgo_import_dynamic libc_pipe pipe "libc.so"
|
||||
//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so"
|
||||
//go:cgo_import_dynamic libc_getsockname getsockname "libsocket.so"
|
||||
//go:cgo_import_dynamic libc_getcwd getcwd "libc.so"
|
||||
//go:cgo_import_dynamic libc_getgroups getgroups "libc.so"
|
||||
@@ -140,6 +141,7 @@ import (
|
||||
//go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so"
|
||||
|
||||
//go:linkname procpipe libc_pipe
|
||||
//go:linkname procpipe2 libc_pipe2
|
||||
//go:linkname procgetsockname libc_getsockname
|
||||
//go:linkname procGetcwd libc_getcwd
|
||||
//go:linkname procgetgroups libc_getgroups
|
||||
@@ -270,6 +272,7 @@ import (
|
||||
|
||||
var (
|
||||
procpipe,
|
||||
procpipe2,
|
||||
procgetsockname,
|
||||
procGetcwd,
|
||||
procgetgroups,
|
||||
@@ -412,6 +415,16 @@ func pipe(p *[2]_C_int) (n int, err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func pipe2(p *[2]_C_int, flags int) (err error) {
|
||||
_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0)
|
||||
if e1 != 0 {
|
||||
err = e1
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
|
||||
_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
|
||||
if e1 != 0 {
|
||||
|
||||
@@ -3222,3 +3222,461 @@ const (
|
||||
MPLS_IPTUNNEL_TTL = 0x2
|
||||
MPLS_IPTUNNEL_MAX = 0x2
|
||||
)
|
||||
|
||||
const (
|
||||
ETHTOOL_ID_UNSPEC = 0x0
|
||||
ETHTOOL_RX_COPYBREAK = 0x1
|
||||
ETHTOOL_TX_COPYBREAK = 0x2
|
||||
ETHTOOL_PFC_PREVENTION_TOUT = 0x3
|
||||
ETHTOOL_TUNABLE_UNSPEC = 0x0
|
||||
ETHTOOL_TUNABLE_U8 = 0x1
|
||||
ETHTOOL_TUNABLE_U16 = 0x2
|
||||
ETHTOOL_TUNABLE_U32 = 0x3
|
||||
ETHTOOL_TUNABLE_U64 = 0x4
|
||||
ETHTOOL_TUNABLE_STRING = 0x5
|
||||
ETHTOOL_TUNABLE_S8 = 0x6
|
||||
ETHTOOL_TUNABLE_S16 = 0x7
|
||||
ETHTOOL_TUNABLE_S32 = 0x8
|
||||
ETHTOOL_TUNABLE_S64 = 0x9
|
||||
ETHTOOL_PHY_ID_UNSPEC = 0x0
|
||||
ETHTOOL_PHY_DOWNSHIFT = 0x1
|
||||
ETHTOOL_PHY_FAST_LINK_DOWN = 0x2
|
||||
ETHTOOL_PHY_EDPD = 0x3
|
||||
ETHTOOL_LINK_EXT_STATE_AUTONEG = 0x0
|
||||
ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE = 0x1
|
||||
ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH = 0x2
|
||||
ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY = 0x3
|
||||
ETHTOOL_LINK_EXT_STATE_NO_CABLE = 0x4
|
||||
ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE = 0x5
|
||||
ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE = 0x6
|
||||
ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE = 0x7
|
||||
ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED = 0x8
|
||||
ETHTOOL_LINK_EXT_STATE_OVERHEAT = 0x9
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED = 0x1
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED = 0x2
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED = 0x3
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE = 0x4
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE = 0x5
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD = 0x6
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED = 0x1
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT = 0x2
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = 0x3
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT = 0x4
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK = 0x1
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK = 0x2
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS = 0x3
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED = 0x4
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED = 0x5
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS = 0x1
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE = 0x2
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 0x1
|
||||
ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = 0x2
|
||||
ETHTOOL_FLASH_ALL_REGIONS = 0x0
|
||||
ETHTOOL_F_UNSUPPORTED__BIT = 0x0
|
||||
ETHTOOL_F_WISH__BIT = 0x1
|
||||
ETHTOOL_F_COMPAT__BIT = 0x2
|
||||
ETHTOOL_FEC_NONE_BIT = 0x0
|
||||
ETHTOOL_FEC_AUTO_BIT = 0x1
|
||||
ETHTOOL_FEC_OFF_BIT = 0x2
|
||||
ETHTOOL_FEC_RS_BIT = 0x3
|
||||
ETHTOOL_FEC_BASER_BIT = 0x4
|
||||
ETHTOOL_FEC_LLRS_BIT = 0x5
|
||||
ETHTOOL_LINK_MODE_10baseT_Half_BIT = 0x0
|
||||
ETHTOOL_LINK_MODE_10baseT_Full_BIT = 0x1
|
||||
ETHTOOL_LINK_MODE_100baseT_Half_BIT = 0x2
|
||||
ETHTOOL_LINK_MODE_100baseT_Full_BIT = 0x3
|
||||
ETHTOOL_LINK_MODE_1000baseT_Half_BIT = 0x4
|
||||
ETHTOOL_LINK_MODE_1000baseT_Full_BIT = 0x5
|
||||
ETHTOOL_LINK_MODE_Autoneg_BIT = 0x6
|
||||
ETHTOOL_LINK_MODE_TP_BIT = 0x7
|
||||
ETHTOOL_LINK_MODE_AUI_BIT = 0x8
|
||||
ETHTOOL_LINK_MODE_MII_BIT = 0x9
|
||||
ETHTOOL_LINK_MODE_FIBRE_BIT = 0xa
|
||||
ETHTOOL_LINK_MODE_BNC_BIT = 0xb
|
||||
ETHTOOL_LINK_MODE_10000baseT_Full_BIT = 0xc
|
||||
ETHTOOL_LINK_MODE_Pause_BIT = 0xd
|
||||
ETHTOOL_LINK_MODE_Asym_Pause_BIT = 0xe
|
||||
ETHTOOL_LINK_MODE_2500baseX_Full_BIT = 0xf
|
||||
ETHTOOL_LINK_MODE_Backplane_BIT = 0x10
|
||||
ETHTOOL_LINK_MODE_1000baseKX_Full_BIT = 0x11
|
||||
ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT = 0x12
|
||||
ETHTOOL_LINK_MODE_10000baseKR_Full_BIT = 0x13
|
||||
ETHTOOL_LINK_MODE_10000baseR_FEC_BIT = 0x14
|
||||
ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT = 0x15
|
||||
ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT = 0x16
|
||||
ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT = 0x17
|
||||
ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT = 0x18
|
||||
ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT = 0x19
|
||||
ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT = 0x1a
|
||||
ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT = 0x1b
|
||||
ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT = 0x1c
|
||||
ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT = 0x1d
|
||||
ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT = 0x1e
|
||||
ETHTOOL_LINK_MODE_25000baseCR_Full_BIT = 0x1f
|
||||
ETHTOOL_LINK_MODE_25000baseKR_Full_BIT = 0x20
|
||||
ETHTOOL_LINK_MODE_25000baseSR_Full_BIT = 0x21
|
||||
ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT = 0x22
|
||||
ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT = 0x23
|
||||
ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT = 0x24
|
||||
ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 0x25
|
||||
ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 0x26
|
||||
ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 0x27
|
||||
ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 0x28
|
||||
ETHTOOL_LINK_MODE_1000baseX_Full_BIT = 0x29
|
||||
ETHTOOL_LINK_MODE_10000baseCR_Full_BIT = 0x2a
|
||||
ETHTOOL_LINK_MODE_10000baseSR_Full_BIT = 0x2b
|
||||
ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 0x2c
|
||||
ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 0x2d
|
||||
ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 0x2e
|
||||
ETHTOOL_LINK_MODE_2500baseT_Full_BIT = 0x2f
|
||||
ETHTOOL_LINK_MODE_5000baseT_Full_BIT = 0x30
|
||||
ETHTOOL_LINK_MODE_FEC_NONE_BIT = 0x31
|
||||
ETHTOOL_LINK_MODE_FEC_RS_BIT = 0x32
|
||||
ETHTOOL_LINK_MODE_FEC_BASER_BIT = 0x33
|
||||
ETHTOOL_LINK_MODE_50000baseKR_Full_BIT = 0x34
|
||||
ETHTOOL_LINK_MODE_50000baseSR_Full_BIT = 0x35
|
||||
ETHTOOL_LINK_MODE_50000baseCR_Full_BIT = 0x36
|
||||
ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT = 0x37
|
||||
ETHTOOL_LINK_MODE_50000baseDR_Full_BIT = 0x38
|
||||
ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT = 0x39
|
||||
ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT = 0x3a
|
||||
ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT = 0x3b
|
||||
ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 0x3c
|
||||
ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT = 0x3d
|
||||
ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT = 0x3e
|
||||
ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT = 0x3f
|
||||
ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 0x40
|
||||
ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT = 0x41
|
||||
ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 0x42
|
||||
ETHTOOL_LINK_MODE_100baseT1_Full_BIT = 0x43
|
||||
ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = 0x44
|
||||
ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT = 0x45
|
||||
ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT = 0x46
|
||||
ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT = 0x47
|
||||
ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT = 0x48
|
||||
ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT = 0x49
|
||||
ETHTOOL_LINK_MODE_FEC_LLRS_BIT = 0x4a
|
||||
ETHTOOL_LINK_MODE_100000baseKR_Full_BIT = 0x4b
|
||||
ETHTOOL_LINK_MODE_100000baseSR_Full_BIT = 0x4c
|
||||
ETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT = 0x4d
|
||||
ETHTOOL_LINK_MODE_100000baseCR_Full_BIT = 0x4e
|
||||
ETHTOOL_LINK_MODE_100000baseDR_Full_BIT = 0x4f
|
||||
ETHTOOL_LINK_MODE_200000baseKR2_Full_BIT = 0x50
|
||||
ETHTOOL_LINK_MODE_200000baseSR2_Full_BIT = 0x51
|
||||
ETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT = 0x52
|
||||
ETHTOOL_LINK_MODE_200000baseDR2_Full_BIT = 0x53
|
||||
ETHTOOL_LINK_MODE_200000baseCR2_Full_BIT = 0x54
|
||||
ETHTOOL_LINK_MODE_400000baseKR4_Full_BIT = 0x55
|
||||
ETHTOOL_LINK_MODE_400000baseSR4_Full_BIT = 0x56
|
||||
ETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT = 0x57
|
||||
ETHTOOL_LINK_MODE_400000baseDR4_Full_BIT = 0x58
|
||||
ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 0x59
|
||||
ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 0x5a
|
||||
ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 0x5b
|
||||
|
||||
ETHTOOL_MSG_USER_NONE = 0x0
|
||||
ETHTOOL_MSG_STRSET_GET = 0x1
|
||||
ETHTOOL_MSG_LINKINFO_GET = 0x2
|
||||
ETHTOOL_MSG_LINKINFO_SET = 0x3
|
||||
ETHTOOL_MSG_LINKMODES_GET = 0x4
|
||||
ETHTOOL_MSG_LINKMODES_SET = 0x5
|
||||
ETHTOOL_MSG_LINKSTATE_GET = 0x6
|
||||
ETHTOOL_MSG_DEBUG_GET = 0x7
|
||||
ETHTOOL_MSG_DEBUG_SET = 0x8
|
||||
ETHTOOL_MSG_WOL_GET = 0x9
|
||||
ETHTOOL_MSG_WOL_SET = 0xa
|
||||
ETHTOOL_MSG_FEATURES_GET = 0xb
|
||||
ETHTOOL_MSG_FEATURES_SET = 0xc
|
||||
ETHTOOL_MSG_PRIVFLAGS_GET = 0xd
|
||||
ETHTOOL_MSG_PRIVFLAGS_SET = 0xe
|
||||
ETHTOOL_MSG_RINGS_GET = 0xf
|
||||
ETHTOOL_MSG_RINGS_SET = 0x10
|
||||
ETHTOOL_MSG_CHANNELS_GET = 0x11
|
||||
ETHTOOL_MSG_CHANNELS_SET = 0x12
|
||||
ETHTOOL_MSG_COALESCE_GET = 0x13
|
||||
ETHTOOL_MSG_COALESCE_SET = 0x14
|
||||
ETHTOOL_MSG_PAUSE_GET = 0x15
|
||||
ETHTOOL_MSG_PAUSE_SET = 0x16
|
||||
ETHTOOL_MSG_EEE_GET = 0x17
|
||||
ETHTOOL_MSG_EEE_SET = 0x18
|
||||
ETHTOOL_MSG_TSINFO_GET = 0x19
|
||||
ETHTOOL_MSG_CABLE_TEST_ACT = 0x1a
|
||||
ETHTOOL_MSG_CABLE_TEST_TDR_ACT = 0x1b
|
||||
ETHTOOL_MSG_TUNNEL_INFO_GET = 0x1c
|
||||
ETHTOOL_MSG_USER_MAX = 0x1c
|
||||
ETHTOOL_MSG_KERNEL_NONE = 0x0
|
||||
ETHTOOL_MSG_STRSET_GET_REPLY = 0x1
|
||||
ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2
|
||||
ETHTOOL_MSG_LINKINFO_NTF = 0x3
|
||||
ETHTOOL_MSG_LINKMODES_GET_REPLY = 0x4
|
||||
ETHTOOL_MSG_LINKMODES_NTF = 0x5
|
||||
ETHTOOL_MSG_LINKSTATE_GET_REPLY = 0x6
|
||||
ETHTOOL_MSG_DEBUG_GET_REPLY = 0x7
|
||||
ETHTOOL_MSG_DEBUG_NTF = 0x8
|
||||
ETHTOOL_MSG_WOL_GET_REPLY = 0x9
|
||||
ETHTOOL_MSG_WOL_NTF = 0xa
|
||||
ETHTOOL_MSG_FEATURES_GET_REPLY = 0xb
|
||||
ETHTOOL_MSG_FEATURES_SET_REPLY = 0xc
|
||||
ETHTOOL_MSG_FEATURES_NTF = 0xd
|
||||
ETHTOOL_MSG_PRIVFLAGS_GET_REPLY = 0xe
|
||||
ETHTOOL_MSG_PRIVFLAGS_NTF = 0xf
|
||||
ETHTOOL_MSG_RINGS_GET_REPLY = 0x10
|
||||
ETHTOOL_MSG_RINGS_NTF = 0x11
|
||||
ETHTOOL_MSG_CHANNELS_GET_REPLY = 0x12
|
||||
ETHTOOL_MSG_CHANNELS_NTF = 0x13
|
||||
ETHTOOL_MSG_COALESCE_GET_REPLY = 0x14
|
||||
ETHTOOL_MSG_COALESCE_NTF = 0x15
|
||||
ETHTOOL_MSG_PAUSE_GET_REPLY = 0x16
|
||||
ETHTOOL_MSG_PAUSE_NTF = 0x17
|
||||
ETHTOOL_MSG_EEE_GET_REPLY = 0x18
|
||||
ETHTOOL_MSG_EEE_NTF = 0x19
|
||||
ETHTOOL_MSG_TSINFO_GET_REPLY = 0x1a
|
||||
ETHTOOL_MSG_CABLE_TEST_NTF = 0x1b
|
||||
ETHTOOL_MSG_CABLE_TEST_TDR_NTF = 0x1c
|
||||
ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = 0x1d
|
||||
ETHTOOL_MSG_KERNEL_MAX = 0x1d
|
||||
ETHTOOL_A_HEADER_UNSPEC = 0x0
|
||||
ETHTOOL_A_HEADER_DEV_INDEX = 0x1
|
||||
ETHTOOL_A_HEADER_DEV_NAME = 0x2
|
||||
ETHTOOL_A_HEADER_FLAGS = 0x3
|
||||
ETHTOOL_A_HEADER_MAX = 0x3
|
||||
ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0
|
||||
ETHTOOL_A_BITSET_BIT_INDEX = 0x1
|
||||
ETHTOOL_A_BITSET_BIT_NAME = 0x2
|
||||
ETHTOOL_A_BITSET_BIT_VALUE = 0x3
|
||||
ETHTOOL_A_BITSET_BIT_MAX = 0x3
|
||||
ETHTOOL_A_BITSET_BITS_UNSPEC = 0x0
|
||||
ETHTOOL_A_BITSET_BITS_BIT = 0x1
|
||||
ETHTOOL_A_BITSET_BITS_MAX = 0x1
|
||||
ETHTOOL_A_BITSET_UNSPEC = 0x0
|
||||
ETHTOOL_A_BITSET_NOMASK = 0x1
|
||||
ETHTOOL_A_BITSET_SIZE = 0x2
|
||||
ETHTOOL_A_BITSET_BITS = 0x3
|
||||
ETHTOOL_A_BITSET_VALUE = 0x4
|
||||
ETHTOOL_A_BITSET_MASK = 0x5
|
||||
ETHTOOL_A_BITSET_MAX = 0x5
|
||||
ETHTOOL_A_STRING_UNSPEC = 0x0
|
||||
ETHTOOL_A_STRING_INDEX = 0x1
|
||||
ETHTOOL_A_STRING_VALUE = 0x2
|
||||
ETHTOOL_A_STRING_MAX = 0x2
|
||||
ETHTOOL_A_STRINGS_UNSPEC = 0x0
|
||||
ETHTOOL_A_STRINGS_STRING = 0x1
|
||||
ETHTOOL_A_STRINGS_MAX = 0x1
|
||||
ETHTOOL_A_STRINGSET_UNSPEC = 0x0
|
||||
ETHTOOL_A_STRINGSET_ID = 0x1
|
||||
ETHTOOL_A_STRINGSET_COUNT = 0x2
|
||||
ETHTOOL_A_STRINGSET_STRINGS = 0x3
|
||||
ETHTOOL_A_STRINGSET_MAX = 0x3
|
||||
ETHTOOL_A_STRINGSETS_UNSPEC = 0x0
|
||||
ETHTOOL_A_STRINGSETS_STRINGSET = 0x1
|
||||
ETHTOOL_A_STRINGSETS_MAX = 0x1
|
||||
ETHTOOL_A_STRSET_UNSPEC = 0x0
|
||||
ETHTOOL_A_STRSET_HEADER = 0x1
|
||||
ETHTOOL_A_STRSET_STRINGSETS = 0x2
|
||||
ETHTOOL_A_STRSET_COUNTS_ONLY = 0x3
|
||||
ETHTOOL_A_STRSET_MAX = 0x3
|
||||
ETHTOOL_A_LINKINFO_UNSPEC = 0x0
|
||||
ETHTOOL_A_LINKINFO_HEADER = 0x1
|
||||
ETHTOOL_A_LINKINFO_PORT = 0x2
|
||||
ETHTOOL_A_LINKINFO_PHYADDR = 0x3
|
||||
ETHTOOL_A_LINKINFO_TP_MDIX = 0x4
|
||||
ETHTOOL_A_LINKINFO_TP_MDIX_CTRL = 0x5
|
||||
ETHTOOL_A_LINKINFO_TRANSCEIVER = 0x6
|
||||
ETHTOOL_A_LINKINFO_MAX = 0x6
|
||||
ETHTOOL_A_LINKMODES_UNSPEC = 0x0
|
||||
ETHTOOL_A_LINKMODES_HEADER = 0x1
|
||||
ETHTOOL_A_LINKMODES_AUTONEG = 0x2
|
||||
ETHTOOL_A_LINKMODES_OURS = 0x3
|
||||
ETHTOOL_A_LINKMODES_PEER = 0x4
|
||||
ETHTOOL_A_LINKMODES_SPEED = 0x5
|
||||
ETHTOOL_A_LINKMODES_DUPLEX = 0x6
|
||||
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG = 0x7
|
||||
ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE = 0x8
|
||||
ETHTOOL_A_LINKMODES_MAX = 0x8
|
||||
ETHTOOL_A_LINKSTATE_UNSPEC = 0x0
|
||||
ETHTOOL_A_LINKSTATE_HEADER = 0x1
|
||||
ETHTOOL_A_LINKSTATE_LINK = 0x2
|
||||
ETHTOOL_A_LINKSTATE_SQI = 0x3
|
||||
ETHTOOL_A_LINKSTATE_SQI_MAX = 0x4
|
||||
ETHTOOL_A_LINKSTATE_EXT_STATE = 0x5
|
||||
ETHTOOL_A_LINKSTATE_EXT_SUBSTATE = 0x6
|
||||
ETHTOOL_A_LINKSTATE_MAX = 0x6
|
||||
ETHTOOL_A_DEBUG_UNSPEC = 0x0
|
||||
ETHTOOL_A_DEBUG_HEADER = 0x1
|
||||
ETHTOOL_A_DEBUG_MSGMASK = 0x2
|
||||
ETHTOOL_A_DEBUG_MAX = 0x2
|
||||
ETHTOOL_A_WOL_UNSPEC = 0x0
|
||||
ETHTOOL_A_WOL_HEADER = 0x1
|
||||
ETHTOOL_A_WOL_MODES = 0x2
|
||||
ETHTOOL_A_WOL_SOPASS = 0x3
|
||||
ETHTOOL_A_WOL_MAX = 0x3
|
||||
ETHTOOL_A_FEATURES_UNSPEC = 0x0
|
||||
ETHTOOL_A_FEATURES_HEADER = 0x1
|
||||
ETHTOOL_A_FEATURES_HW = 0x2
|
||||
ETHTOOL_A_FEATURES_WANTED = 0x3
|
||||
ETHTOOL_A_FEATURES_ACTIVE = 0x4
|
||||
ETHTOOL_A_FEATURES_NOCHANGE = 0x5
|
||||
ETHTOOL_A_FEATURES_MAX = 0x5
|
||||
ETHTOOL_A_PRIVFLAGS_UNSPEC = 0x0
|
||||
ETHTOOL_A_PRIVFLAGS_HEADER = 0x1
|
||||
ETHTOOL_A_PRIVFLAGS_FLAGS = 0x2
|
||||
ETHTOOL_A_PRIVFLAGS_MAX = 0x2
|
||||
ETHTOOL_A_RINGS_UNSPEC = 0x0
|
||||
ETHTOOL_A_RINGS_HEADER = 0x1
|
||||
ETHTOOL_A_RINGS_RX_MAX = 0x2
|
||||
ETHTOOL_A_RINGS_RX_MINI_MAX = 0x3
|
||||
ETHTOOL_A_RINGS_RX_JUMBO_MAX = 0x4
|
||||
ETHTOOL_A_RINGS_TX_MAX = 0x5
|
||||
ETHTOOL_A_RINGS_RX = 0x6
|
||||
ETHTOOL_A_RINGS_RX_MINI = 0x7
|
||||
ETHTOOL_A_RINGS_RX_JUMBO = 0x8
|
||||
ETHTOOL_A_RINGS_TX = 0x9
|
||||
ETHTOOL_A_RINGS_MAX = 0x9
|
||||
ETHTOOL_A_CHANNELS_UNSPEC = 0x0
|
||||
ETHTOOL_A_CHANNELS_HEADER = 0x1
|
||||
ETHTOOL_A_CHANNELS_RX_MAX = 0x2
|
||||
ETHTOOL_A_CHANNELS_TX_MAX = 0x3
|
||||
ETHTOOL_A_CHANNELS_OTHER_MAX = 0x4
|
||||
ETHTOOL_A_CHANNELS_COMBINED_MAX = 0x5
|
||||
ETHTOOL_A_CHANNELS_RX_COUNT = 0x6
|
||||
ETHTOOL_A_CHANNELS_TX_COUNT = 0x7
|
||||
ETHTOOL_A_CHANNELS_OTHER_COUNT = 0x8
|
||||
ETHTOOL_A_CHANNELS_COMBINED_COUNT = 0x9
|
||||
ETHTOOL_A_CHANNELS_MAX = 0x9
|
||||
ETHTOOL_A_COALESCE_UNSPEC = 0x0
|
||||
ETHTOOL_A_COALESCE_HEADER = 0x1
|
||||
ETHTOOL_A_COALESCE_RX_USECS = 0x2
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES = 0x3
|
||||
ETHTOOL_A_COALESCE_RX_USECS_IRQ = 0x4
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ = 0x5
|
||||
ETHTOOL_A_COALESCE_TX_USECS = 0x6
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES = 0x7
|
||||
ETHTOOL_A_COALESCE_TX_USECS_IRQ = 0x8
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ = 0x9
|
||||
ETHTOOL_A_COALESCE_STATS_BLOCK_USECS = 0xa
|
||||
ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX = 0xb
|
||||
ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX = 0xc
|
||||
ETHTOOL_A_COALESCE_PKT_RATE_LOW = 0xd
|
||||
ETHTOOL_A_COALESCE_RX_USECS_LOW = 0xe
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW = 0xf
|
||||
ETHTOOL_A_COALESCE_TX_USECS_LOW = 0x10
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW = 0x11
|
||||
ETHTOOL_A_COALESCE_PKT_RATE_HIGH = 0x12
|
||||
ETHTOOL_A_COALESCE_RX_USECS_HIGH = 0x13
|
||||
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH = 0x14
|
||||
ETHTOOL_A_COALESCE_TX_USECS_HIGH = 0x15
|
||||
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH = 0x16
|
||||
ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL = 0x17
|
||||
ETHTOOL_A_COALESCE_MAX = 0x17
|
||||
ETHTOOL_A_PAUSE_UNSPEC = 0x0
|
||||
ETHTOOL_A_PAUSE_HEADER = 0x1
|
||||
ETHTOOL_A_PAUSE_AUTONEG = 0x2
|
||||
ETHTOOL_A_PAUSE_RX = 0x3
|
||||
ETHTOOL_A_PAUSE_TX = 0x4
|
||||
ETHTOOL_A_PAUSE_STATS = 0x5
|
||||
ETHTOOL_A_PAUSE_MAX = 0x5
|
||||
ETHTOOL_A_PAUSE_STAT_UNSPEC = 0x0
|
||||
ETHTOOL_A_PAUSE_STAT_PAD = 0x1
|
||||
ETHTOOL_A_PAUSE_STAT_TX_FRAMES = 0x2
|
||||
ETHTOOL_A_PAUSE_STAT_RX_FRAMES = 0x3
|
||||
ETHTOOL_A_PAUSE_STAT_MAX = 0x3
|
||||
ETHTOOL_A_EEE_UNSPEC = 0x0
|
||||
ETHTOOL_A_EEE_HEADER = 0x1
|
||||
ETHTOOL_A_EEE_MODES_OURS = 0x2
|
||||
ETHTOOL_A_EEE_MODES_PEER = 0x3
|
||||
ETHTOOL_A_EEE_ACTIVE = 0x4
|
||||
ETHTOOL_A_EEE_ENABLED = 0x5
|
||||
ETHTOOL_A_EEE_TX_LPI_ENABLED = 0x6
|
||||
ETHTOOL_A_EEE_TX_LPI_TIMER = 0x7
|
||||
ETHTOOL_A_EEE_MAX = 0x7
|
||||
ETHTOOL_A_TSINFO_UNSPEC = 0x0
|
||||
ETHTOOL_A_TSINFO_HEADER = 0x1
|
||||
ETHTOOL_A_TSINFO_TIMESTAMPING = 0x2
|
||||
ETHTOOL_A_TSINFO_TX_TYPES = 0x3
|
||||
ETHTOOL_A_TSINFO_RX_FILTERS = 0x4
|
||||
ETHTOOL_A_TSINFO_PHC_INDEX = 0x5
|
||||
ETHTOOL_A_TSINFO_MAX = 0x5
|
||||
ETHTOOL_A_CABLE_TEST_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_TEST_HEADER = 0x1
|
||||
ETHTOOL_A_CABLE_TEST_MAX = 0x1
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_OK = 0x1
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_OPEN = 0x2
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT = 0x3
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT = 0x4
|
||||
ETHTOOL_A_CABLE_PAIR_A = 0x0
|
||||
ETHTOOL_A_CABLE_PAIR_B = 0x1
|
||||
ETHTOOL_A_CABLE_PAIR_C = 0x2
|
||||
ETHTOOL_A_CABLE_PAIR_D = 0x3
|
||||
ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_RESULT_PAIR = 0x1
|
||||
ETHTOOL_A_CABLE_RESULT_CODE = 0x2
|
||||
ETHTOOL_A_CABLE_RESULT_MAX = 0x2
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2
|
||||
ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x2
|
||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1
|
||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2
|
||||
ETHTOOL_A_CABLE_NEST_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_NEST_RESULT = 0x1
|
||||
ETHTOOL_A_CABLE_NEST_FAULT_LENGTH = 0x2
|
||||
ETHTOOL_A_CABLE_NEST_MAX = 0x2
|
||||
ETHTOOL_A_CABLE_TEST_NTF_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_TEST_NTF_HEADER = 0x1
|
||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS = 0x2
|
||||
ETHTOOL_A_CABLE_TEST_NTF_NEST = 0x3
|
||||
ETHTOOL_A_CABLE_TEST_NTF_MAX = 0x3
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST = 0x1
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST = 0x2
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP = 0x3
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR = 0x4
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = 0x4
|
||||
ETHTOOL_A_CABLE_TEST_TDR_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_TEST_TDR_HEADER = 0x1
|
||||
ETHTOOL_A_CABLE_TEST_TDR_CFG = 0x2
|
||||
ETHTOOL_A_CABLE_TEST_TDR_MAX = 0x2
|
||||
ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_AMPLITUDE_PAIR = 0x1
|
||||
ETHTOOL_A_CABLE_AMPLITUDE_mV = 0x2
|
||||
ETHTOOL_A_CABLE_AMPLITUDE_MAX = 0x2
|
||||
ETHTOOL_A_CABLE_PULSE_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_PULSE_mV = 0x1
|
||||
ETHTOOL_A_CABLE_PULSE_MAX = 0x1
|
||||
ETHTOOL_A_CABLE_STEP_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE = 0x1
|
||||
ETHTOOL_A_CABLE_STEP_LAST_DISTANCE = 0x2
|
||||
ETHTOOL_A_CABLE_STEP_STEP_DISTANCE = 0x3
|
||||
ETHTOOL_A_CABLE_STEP_MAX = 0x3
|
||||
ETHTOOL_A_CABLE_TDR_NEST_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_TDR_NEST_STEP = 0x1
|
||||
ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE = 0x2
|
||||
ETHTOOL_A_CABLE_TDR_NEST_PULSE = 0x3
|
||||
ETHTOOL_A_CABLE_TDR_NEST_MAX = 0x3
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC = 0x0
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER = 0x1
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS = 0x2
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST = 0x3
|
||||
ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = 0x3
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_VXLAN = 0x0
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_GENEVE = 0x1
|
||||
ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE = 0x2
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC = 0x0
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT = 0x1
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE = 0x2
|
||||
ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = 0x2
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC = 0x0
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE = 0x1
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES = 0x2
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY = 0x3
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = 0x3
|
||||
ETHTOOL_A_TUNNEL_UDP_UNSPEC = 0x0
|
||||
ETHTOOL_A_TUNNEL_UDP_TABLE = 0x1
|
||||
ETHTOOL_A_TUNNEL_UDP_MAX = 0x1
|
||||
ETHTOOL_A_TUNNEL_INFO_UNSPEC = 0x0
|
||||
ETHTOOL_A_TUNNEL_INFO_HEADER = 0x1
|
||||
ETHTOOL_A_TUNNEL_INFO_UDP_PORTS = 0x2
|
||||
ETHTOOL_A_TUNNEL_INFO_MAX = 0x2
|
||||
)
|
||||
|
||||
@@ -18,9 +18,11 @@ import (
|
||||
)
|
||||
|
||||
type Handle uintptr
|
||||
type HWND uintptr
|
||||
|
||||
const (
|
||||
InvalidHandle = ^Handle(0)
|
||||
InvalidHWND = ^HWND(0)
|
||||
|
||||
// Flags for DefineDosDevice.
|
||||
DDD_EXACT_MATCH_ON_REMOVE = 0x00000004
|
||||
@@ -214,6 +216,10 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
||||
//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW
|
||||
//sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error)
|
||||
//sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW
|
||||
//sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId
|
||||
//sys GetShellWindow() (shellWindow HWND) = user32.GetShellWindow
|
||||
//sys MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW
|
||||
//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx
|
||||
//sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath
|
||||
//sys TerminateProcess(handle Handle, exitcode uint32) (err error)
|
||||
//sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error)
|
||||
@@ -259,22 +265,32 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
||||
//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect
|
||||
//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile
|
||||
//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW
|
||||
//sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW
|
||||
//sys FindNextChangeNotification(handle Handle) (err error)
|
||||
//sys FindCloseChangeNotification(handle Handle) (err error)
|
||||
//sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW
|
||||
//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore
|
||||
//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore
|
||||
//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore
|
||||
//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore
|
||||
//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore
|
||||
//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore
|
||||
//sys CertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore
|
||||
//sys CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext
|
||||
//sys PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore
|
||||
//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain
|
||||
//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain
|
||||
//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext
|
||||
//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext
|
||||
//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy
|
||||
//sys PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore
|
||||
//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain
|
||||
//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain
|
||||
//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext
|
||||
//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext
|
||||
//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy
|
||||
//sys CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW
|
||||
//sys CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension
|
||||
//sys CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) [failretval==nil] = crypt32.CertFindCertificateInStore
|
||||
//sys CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) [failretval==nil] = crypt32.CertFindChainInStore
|
||||
//sys CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) = crypt32.CryptAcquireCertificatePrivateKey
|
||||
//sys CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject
|
||||
//sys CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject
|
||||
//sys CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData
|
||||
//sys CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptUnprotectData
|
||||
//sys WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) = wintrust.WinVerifyTrustEx
|
||||
//sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW
|
||||
//sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey
|
||||
//sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW
|
||||
@@ -347,8 +363,6 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
||||
//sys QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW
|
||||
//sys SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW
|
||||
//sys SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW
|
||||
//sys MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW
|
||||
//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx
|
||||
//sys InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW
|
||||
//sys SetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters
|
||||
//sys GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters
|
||||
|
||||
@@ -227,7 +227,7 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
// filters for ReadDirectoryChangesW
|
||||
// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW
|
||||
FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
|
||||
FILE_NOTIFY_CHANGE_DIR_NAME = 0x002
|
||||
FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004
|
||||
@@ -538,6 +538,67 @@ const (
|
||||
CERT_CLOSE_STORE_FORCE_FLAG = 0x00000001
|
||||
CERT_CLOSE_STORE_CHECK_FLAG = 0x00000002
|
||||
|
||||
/* CryptQueryObject object type */
|
||||
CERT_QUERY_OBJECT_FILE = 1
|
||||
CERT_QUERY_OBJECT_BLOB = 2
|
||||
|
||||
/* CryptQueryObject content type flags */
|
||||
CERT_QUERY_CONTENT_CERT = 1
|
||||
CERT_QUERY_CONTENT_CTL = 2
|
||||
CERT_QUERY_CONTENT_CRL = 3
|
||||
CERT_QUERY_CONTENT_SERIALIZED_STORE = 4
|
||||
CERT_QUERY_CONTENT_SERIALIZED_CERT = 5
|
||||
CERT_QUERY_CONTENT_SERIALIZED_CTL = 6
|
||||
CERT_QUERY_CONTENT_SERIALIZED_CRL = 7
|
||||
CERT_QUERY_CONTENT_PKCS7_SIGNED = 8
|
||||
CERT_QUERY_CONTENT_PKCS7_UNSIGNED = 9
|
||||
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED = 10
|
||||
CERT_QUERY_CONTENT_PKCS10 = 11
|
||||
CERT_QUERY_CONTENT_PFX = 12
|
||||
CERT_QUERY_CONTENT_CERT_PAIR = 13
|
||||
CERT_QUERY_CONTENT_PFX_AND_LOAD = 14
|
||||
CERT_QUERY_CONTENT_FLAG_CERT = (1 << CERT_QUERY_CONTENT_CERT)
|
||||
CERT_QUERY_CONTENT_FLAG_CTL = (1 << CERT_QUERY_CONTENT_CTL)
|
||||
CERT_QUERY_CONTENT_FLAG_CRL = (1 << CERT_QUERY_CONTENT_CRL)
|
||||
CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE = (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)
|
||||
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT = (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)
|
||||
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)
|
||||
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)
|
||||
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)
|
||||
CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)
|
||||
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)
|
||||
CERT_QUERY_CONTENT_FLAG_PKCS10 = (1 << CERT_QUERY_CONTENT_PKCS10)
|
||||
CERT_QUERY_CONTENT_FLAG_PFX = (1 << CERT_QUERY_CONTENT_PFX)
|
||||
CERT_QUERY_CONTENT_FLAG_CERT_PAIR = (1 << CERT_QUERY_CONTENT_CERT_PAIR)
|
||||
CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD = (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD)
|
||||
CERT_QUERY_CONTENT_FLAG_ALL = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR)
|
||||
CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED)
|
||||
|
||||
/* CryptQueryObject format type flags */
|
||||
CERT_QUERY_FORMAT_BINARY = 1
|
||||
CERT_QUERY_FORMAT_BASE64_ENCODED = 2
|
||||
CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED = 3
|
||||
CERT_QUERY_FORMAT_FLAG_BINARY = (1 << CERT_QUERY_FORMAT_BINARY)
|
||||
CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED = (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)
|
||||
CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)
|
||||
CERT_QUERY_FORMAT_FLAG_ALL = (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED)
|
||||
|
||||
/* CertGetNameString name types */
|
||||
CERT_NAME_EMAIL_TYPE = 1
|
||||
CERT_NAME_RDN_TYPE = 2
|
||||
CERT_NAME_ATTR_TYPE = 3
|
||||
CERT_NAME_SIMPLE_DISPLAY_TYPE = 4
|
||||
CERT_NAME_FRIENDLY_DISPLAY_TYPE = 5
|
||||
CERT_NAME_DNS_TYPE = 6
|
||||
CERT_NAME_URL_TYPE = 7
|
||||
CERT_NAME_UPN_TYPE = 8
|
||||
|
||||
/* CertGetNameString flags */
|
||||
CERT_NAME_ISSUER_FLAG = 0x1
|
||||
CERT_NAME_DISABLE_IE4_UTF8_FLAG = 0x10000
|
||||
CERT_NAME_SEARCH_ALL_NAMES_FLAG = 0x2
|
||||
CERT_NAME_STR_ENABLE_PUNYCODE_FLAG = 0x00200000
|
||||
|
||||
/* AuthType values for SSLExtraCertChainPolicyPara struct */
|
||||
AUTHTYPE_CLIENT = 1
|
||||
AUTHTYPE_SERVER = 2
|
||||
@@ -548,6 +609,22 @@ const (
|
||||
SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200
|
||||
SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000
|
||||
SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000
|
||||
|
||||
/* Flags for Crypt[Un]ProtectData */
|
||||
CRYPTPROTECT_UI_FORBIDDEN = 0x1
|
||||
CRYPTPROTECT_LOCAL_MACHINE = 0x4
|
||||
CRYPTPROTECT_CRED_SYNC = 0x8
|
||||
CRYPTPROTECT_AUDIT = 0x10
|
||||
CRYPTPROTECT_NO_RECOVERY = 0x20
|
||||
CRYPTPROTECT_VERIFY_PROTECTION = 0x40
|
||||
CRYPTPROTECT_CRED_REGENERATE = 0x80
|
||||
|
||||
/* Flags for CryptProtectPromptStruct */
|
||||
CRYPTPROTECT_PROMPT_ON_UNPROTECT = 1
|
||||
CRYPTPROTECT_PROMPT_ON_PROTECT = 2
|
||||
CRYPTPROTECT_PROMPT_RESERVED = 4
|
||||
CRYPTPROTECT_PROMPT_STRONG = 8
|
||||
CRYPTPROTECT_PROMPT_REQUIRE_STRONG = 16
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -570,10 +647,58 @@ const (
|
||||
REALTIME_PRIORITY_CLASS = 0x00000100
|
||||
)
|
||||
|
||||
/* wintrust.h constants for WinVerifyTrustEx */
|
||||
const (
|
||||
WTD_UI_ALL = 1
|
||||
WTD_UI_NONE = 2
|
||||
WTD_UI_NOBAD = 3
|
||||
WTD_UI_NOGOOD = 4
|
||||
|
||||
WTD_REVOKE_NONE = 0
|
||||
WTD_REVOKE_WHOLECHAIN = 1
|
||||
|
||||
WTD_CHOICE_FILE = 1
|
||||
WTD_CHOICE_CATALOG = 2
|
||||
WTD_CHOICE_BLOB = 3
|
||||
WTD_CHOICE_SIGNER = 4
|
||||
WTD_CHOICE_CERT = 5
|
||||
|
||||
WTD_STATEACTION_IGNORE = 0x00000000
|
||||
WTD_STATEACTION_VERIFY = 0x00000010
|
||||
WTD_STATEACTION_CLOSE = 0x00000002
|
||||
WTD_STATEACTION_AUTO_CACHE = 0x00000003
|
||||
WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004
|
||||
|
||||
WTD_USE_IE4_TRUST_FLAG = 0x1
|
||||
WTD_NO_IE4_CHAIN_FLAG = 0x2
|
||||
WTD_NO_POLICY_USAGE_FLAG = 0x4
|
||||
WTD_REVOCATION_CHECK_NONE = 0x10
|
||||
WTD_REVOCATION_CHECK_END_CERT = 0x20
|
||||
WTD_REVOCATION_CHECK_CHAIN = 0x40
|
||||
WTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x80
|
||||
WTD_SAFER_FLAG = 0x100
|
||||
WTD_HASH_ONLY_FLAG = 0x200
|
||||
WTD_USE_DEFAULT_OSVER_CHECK = 0x400
|
||||
WTD_LIFETIME_SIGNING_FLAG = 0x800
|
||||
WTD_CACHE_ONLY_URL_RETRIEVAL = 0x1000
|
||||
WTD_DISABLE_MD2_MD4 = 0x2000
|
||||
WTD_MOTW = 0x4000
|
||||
|
||||
WTD_UICONTEXT_EXECUTE = 0
|
||||
WTD_UICONTEXT_INSTALL = 1
|
||||
)
|
||||
|
||||
var (
|
||||
OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
|
||||
OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
|
||||
OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
|
||||
|
||||
WINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID{
|
||||
Data1: 0xaac56b,
|
||||
Data2: 0xcd44,
|
||||
Data3: 0x11d0,
|
||||
Data4: [8]byte{0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee},
|
||||
}
|
||||
)
|
||||
|
||||
// Pointer represents a pointer to an arbitrary Windows type.
|
||||
@@ -1162,7 +1287,57 @@ type MibIfRow struct {
|
||||
}
|
||||
|
||||
type CertInfo struct {
|
||||
// Not implemented
|
||||
Version uint32
|
||||
SerialNumber CryptIntegerBlob
|
||||
SignatureAlgorithm CryptAlgorithmIdentifier
|
||||
Issuer CertNameBlob
|
||||
NotBefore Filetime
|
||||
NotAfter Filetime
|
||||
Subject CertNameBlob
|
||||
SubjectPublicKeyInfo CertPublicKeyInfo
|
||||
IssuerUniqueId CryptBitBlob
|
||||
SubjectUniqueId CryptBitBlob
|
||||
CountExtensions uint32
|
||||
Extensions *CertExtension
|
||||
}
|
||||
|
||||
type CertExtension struct {
|
||||
ObjId *byte
|
||||
Critical int32
|
||||
Value CryptObjidBlob
|
||||
}
|
||||
|
||||
type CryptAlgorithmIdentifier struct {
|
||||
ObjId *byte
|
||||
Parameters CryptObjidBlob
|
||||
}
|
||||
|
||||
type CertPublicKeyInfo struct {
|
||||
Algorithm CryptAlgorithmIdentifier
|
||||
PublicKey CryptBitBlob
|
||||
}
|
||||
|
||||
type DataBlob struct {
|
||||
Size uint32
|
||||
Data *byte
|
||||
}
|
||||
type CryptIntegerBlob DataBlob
|
||||
type CryptUintBlob DataBlob
|
||||
type CryptObjidBlob DataBlob
|
||||
type CertNameBlob DataBlob
|
||||
type CertRdnValueBlob DataBlob
|
||||
type CertBlob DataBlob
|
||||
type CrlBlob DataBlob
|
||||
type CryptDataBlob DataBlob
|
||||
type CryptHashBlob DataBlob
|
||||
type CryptDigestBlob DataBlob
|
||||
type CryptDerBlob DataBlob
|
||||
type CryptAttrBlob DataBlob
|
||||
|
||||
type CryptBitBlob struct {
|
||||
Size uint32
|
||||
Data *byte
|
||||
UnusedBits uint32
|
||||
}
|
||||
|
||||
type CertContext struct {
|
||||
@@ -1268,6 +1443,34 @@ type CertChainPolicyStatus struct {
|
||||
ExtraPolicyStatus Pointer
|
||||
}
|
||||
|
||||
type CertPolicyInfo struct {
|
||||
Identifier *byte
|
||||
CountQualifiers uint32
|
||||
Qualifiers *CertPolicyQualifierInfo
|
||||
}
|
||||
|
||||
type CertPoliciesInfo struct {
|
||||
Count uint32
|
||||
PolicyInfos *CertPolicyInfo
|
||||
}
|
||||
|
||||
type CertPolicyQualifierInfo struct {
|
||||
// Not implemented
|
||||
}
|
||||
|
||||
type CertStrongSignPara struct {
|
||||
Size uint32
|
||||
InfoChoice uint32
|
||||
InfoOrSerializedInfoOrOID unsafe.Pointer
|
||||
}
|
||||
|
||||
type CryptProtectPromptStruct struct {
|
||||
Size uint32
|
||||
PromptFlags uint32
|
||||
App HWND
|
||||
Prompt *uint16
|
||||
}
|
||||
|
||||
type CertChainFindByIssuerPara struct {
|
||||
Size uint32
|
||||
UsageIdentifier *byte
|
||||
@@ -1279,9 +1482,36 @@ type CertChainFindByIssuerPara struct {
|
||||
FindArg Pointer
|
||||
}
|
||||
|
||||
type CryptDataBlob struct {
|
||||
Size uint32
|
||||
Data *byte
|
||||
type WinTrustData struct {
|
||||
Size uint32
|
||||
PolicyCallbackData uintptr
|
||||
SIPClientData uintptr
|
||||
UIChoice uint32
|
||||
RevocationChecks uint32
|
||||
UnionChoice uint32
|
||||
FileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer
|
||||
StateAction uint32
|
||||
StateData Handle
|
||||
URLReference *uint16
|
||||
ProvFlags uint32
|
||||
UIContext uint32
|
||||
SignatureSettings *WinTrustSignatureSettings
|
||||
}
|
||||
|
||||
type WinTrustFileInfo struct {
|
||||
Size uint32
|
||||
FilePath *uint16
|
||||
File Handle
|
||||
KnownSubject *GUID
|
||||
}
|
||||
|
||||
type WinTrustSignatureSettings struct {
|
||||
Size uint32
|
||||
Index uint32
|
||||
Flags uint32
|
||||
SecondarySigs uint32
|
||||
VerifiedSigIndex uint32
|
||||
CryptoPolicy *CertStrongSignPara
|
||||
}
|
||||
|
||||
const (
|
||||
|
||||
@@ -51,6 +51,7 @@ var (
|
||||
modshell32 = NewLazySystemDLL("shell32.dll")
|
||||
moduser32 = NewLazySystemDLL("user32.dll")
|
||||
moduserenv = NewLazySystemDLL("userenv.dll")
|
||||
modwintrust = NewLazySystemDLL("wintrust.dll")
|
||||
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
||||
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
||||
|
||||
@@ -147,13 +148,19 @@ var (
|
||||
procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore")
|
||||
procCertFindCertificateInStore = modcrypt32.NewProc("CertFindCertificateInStore")
|
||||
procCertFindChainInStore = modcrypt32.NewProc("CertFindChainInStore")
|
||||
procCertFindExtension = modcrypt32.NewProc("CertFindExtension")
|
||||
procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain")
|
||||
procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext")
|
||||
procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain")
|
||||
procCertGetNameStringW = modcrypt32.NewProc("CertGetNameStringW")
|
||||
procCertOpenStore = modcrypt32.NewProc("CertOpenStore")
|
||||
procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW")
|
||||
procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
|
||||
procCryptAcquireCertificatePrivateKey = modcrypt32.NewProc("CryptAcquireCertificatePrivateKey")
|
||||
procCryptDecodeObject = modcrypt32.NewProc("CryptDecodeObject")
|
||||
procCryptProtectData = modcrypt32.NewProc("CryptProtectData")
|
||||
procCryptQueryObject = modcrypt32.NewProc("CryptQueryObject")
|
||||
procCryptUnprotectData = modcrypt32.NewProc("CryptUnprotectData")
|
||||
procPFXImportCertStore = modcrypt32.NewProc("PFXImportCertStore")
|
||||
procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W")
|
||||
procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
|
||||
@@ -186,9 +193,12 @@ var (
|
||||
procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
|
||||
procExitProcess = modkernel32.NewProc("ExitProcess")
|
||||
procFindClose = modkernel32.NewProc("FindClose")
|
||||
procFindCloseChangeNotification = modkernel32.NewProc("FindCloseChangeNotification")
|
||||
procFindFirstChangeNotificationW = modkernel32.NewProc("FindFirstChangeNotificationW")
|
||||
procFindFirstFileW = modkernel32.NewProc("FindFirstFileW")
|
||||
procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW")
|
||||
procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW")
|
||||
procFindNextChangeNotification = modkernel32.NewProc("FindNextChangeNotification")
|
||||
procFindNextFileW = modkernel32.NewProc("FindNextFileW")
|
||||
procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW")
|
||||
procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW")
|
||||
@@ -344,10 +354,13 @@ var (
|
||||
procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath")
|
||||
procShellExecuteW = modshell32.NewProc("ShellExecuteW")
|
||||
procExitWindowsEx = moduser32.NewProc("ExitWindowsEx")
|
||||
procGetShellWindow = moduser32.NewProc("GetShellWindow")
|
||||
procGetWindowThreadProcessId = moduser32.NewProc("GetWindowThreadProcessId")
|
||||
procMessageBoxW = moduser32.NewProc("MessageBoxW")
|
||||
procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
|
||||
procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
|
||||
procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
|
||||
procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx")
|
||||
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
||||
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
||||
procWSACleanup = modws2_32.NewProc("WSACleanup")
|
||||
@@ -1218,6 +1231,12 @@ func CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint3
|
||||
return
|
||||
}
|
||||
|
||||
func CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) {
|
||||
r0, _, _ := syscall.Syscall(procCertFindExtension.Addr(), 3, uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions)))
|
||||
ret = (*CertExtension)(unsafe.Pointer(r0))
|
||||
return
|
||||
}
|
||||
|
||||
func CertFreeCertificateChain(ctx *CertChainContext) {
|
||||
syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
|
||||
return
|
||||
@@ -1239,6 +1258,12 @@ func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, a
|
||||
return
|
||||
}
|
||||
|
||||
func CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) {
|
||||
r0, _, _ := syscall.Syscall6(procCertGetNameStringW.Addr(), 6, uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size))
|
||||
chars = uint32(r0)
|
||||
return
|
||||
}
|
||||
|
||||
func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
|
||||
r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
|
||||
handle = Handle(r0)
|
||||
@@ -1278,6 +1303,38 @@ func CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, paramete
|
||||
return
|
||||
}
|
||||
|
||||
func CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) {
|
||||
r1, _, e1 := syscall.Syscall9(procCryptDecodeObject.Addr(), 7, uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen)), 0, 0)
|
||||
if r1 == 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {
|
||||
r1, _, e1 := syscall.Syscall9(procCryptProtectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0)
|
||||
if r1 == 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) {
|
||||
r1, _, e1 := syscall.Syscall12(procCryptQueryObject.Addr(), 11, uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context)), 0)
|
||||
if r1 == 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {
|
||||
r1, _, e1 := syscall.Syscall9(procCryptUnprotectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0)
|
||||
if r1 == 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) {
|
||||
r0, _, e1 := syscall.Syscall(procPFXImportCertStore.Addr(), 3, uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags))
|
||||
store = Handle(r0)
|
||||
@@ -1557,6 +1614,36 @@ func FindClose(handle Handle) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func FindCloseChangeNotification(handle Handle) (err error) {
|
||||
r1, _, e1 := syscall.Syscall(procFindCloseChangeNotification.Addr(), 1, uintptr(handle), 0, 0)
|
||||
if r1 == 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {
|
||||
var _p0 *uint16
|
||||
_p0, err = syscall.UTF16PtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return _FindFirstChangeNotification(_p0, watchSubtree, notifyFilter)
|
||||
}
|
||||
|
||||
func _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {
|
||||
var _p1 uint32
|
||||
if watchSubtree {
|
||||
_p1 = 1
|
||||
}
|
||||
r0, _, e1 := syscall.Syscall(procFindFirstChangeNotificationW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter))
|
||||
handle = Handle(r0)
|
||||
if handle == InvalidHandle {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
|
||||
r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
|
||||
handle = Handle(r0)
|
||||
@@ -1584,6 +1671,14 @@ func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, er
|
||||
return
|
||||
}
|
||||
|
||||
func FindNextChangeNotification(handle Handle) (err error) {
|
||||
r1, _, e1 := syscall.Syscall(procFindNextChangeNotification.Addr(), 1, uintptr(handle), 0, 0)
|
||||
if r1 == 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func findNextFile1(handle Handle, data *win32finddata1) (err error) {
|
||||
r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
|
||||
if r1 == 0 {
|
||||
@@ -2930,7 +3025,22 @@ func ExitWindowsEx(flags uint32, reason uint32) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {
|
||||
func GetShellWindow() (shellWindow HWND) {
|
||||
r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0)
|
||||
shellWindow = HWND(r0)
|
||||
return
|
||||
}
|
||||
|
||||
func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) {
|
||||
r0, _, e1 := syscall.Syscall(procGetWindowThreadProcessId.Addr(), 2, uintptr(hwnd), uintptr(unsafe.Pointer(pid)), 0)
|
||||
tid = uint32(r0)
|
||||
if tid == 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {
|
||||
r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0)
|
||||
ret = int32(r0)
|
||||
if ret == 0 {
|
||||
@@ -2967,6 +3077,14 @@ func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {
|
||||
r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))
|
||||
if r0 != 0 {
|
||||
ret = syscall.Errno(r0)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func FreeAddrInfoW(addrinfo *AddrinfoW) {
|
||||
syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user